0
%
正确率
0
/30
答对题目数
0
分钟
用时
单选题
Java
1.

为Test类的一个无形式参数无返回值的方法method书写方法头,使得使用类名Test作为前缀就可以调用它,该方法头的形式为( )

A
static void method()
B
public void method
C
protected void method()
D
abstract void method()
正确答案:A
你的答案:未作答
官方解析:
这道题考察Java中静态方法的声明和调用方式。A选项"static void method()"是正确答案,因为题目要求"使用类名Test作为前缀就可以调用它",这正是静态方法的特征。

静态方法的主要特点是:
1. 可以通过类名直接调用,无需创建类的实例
2. 使用static关键字修饰
3. 属于类而不属于对象

分析其他选项的错误原因:
B选项"public void method":public方法需要通过对象实例调用,不能直接用类名调用
C选项"protected void method()":protected方法同样需要通过对象实例调用
D选项"abstract void method()":抽象方法不能有方法体,且必须在抽象类中定义,同样不能通过类名直接调用

在实际使用中,如果要通过Test.method()这种方式调用,方法必须声明为static。这是因为静态方法是属于类的,而不是属于类的实例,所以可以直接通过类名来访问。
知识点:Java
题友讨论(17)
A是静态方法,可以直接用如下形式调用 Test.method(); 
B是普通public方法,必须实例化类,Test test = new Test(); test.method(); 
C是protected方法,用法同B,只是对于其他的外部class,protected就变成private; 
D是抽象方法,必须被子类继承并重写,然后调用的方式同B。 
故答案:选 A
A是静态方法,可以直接用如下形式调用 Test.method(); 
B是普通public方法,必须实例化类,Test test = new Test(); test.method(); 
C是protected方法,用法同B,只是对于其他的外部class,protected就变成private; 
D是抽象方法,必须被子类继承并重写,然后调用的方式同B。 
故答案:选 A
102 回复
发布于 2017-05-30 20:25
m
m
1 回复
发布于 2021-12-20 09:41 来自Android客户端
0
答案选A
A是静态方法,可以通过【类名.方法名】的形式调用,而不必去实例化一个对象进行方法的调用; 
B是普通的public方法,必须先new一个对象出来,即实例化类,通过对象来调用方法; 
C是protected方法,则只能在子类以及基类中调用该方法,其他的非继承基类的类,是不能有访问权限的;
D是抽象方法,抽象方法必须被抽象类的实现类来实现,这样通过实现类实例化来调用该方法才可以。
答案选A
A是静态方法,可以通过【类名.方法名】的形式调用,而不必去实例化一个对象进行方法的调用; 
B是普通的public方法,必须先new一个对象出来,即实例化类,通过对象来调用方法; 
C是protected方法,则只能在子类以及基类中调用该方法,其他的非继承基类的类,是不能有访问权限的;
D是抽象方法,抽象方法必须被抽象类的实现类来实现,这样通过实现类实例化来调用该方法才可以。
17 回复
发布于 2017-08-07 09:41
静态方法,可以直接用如下形式调用 Test.method();
静态方法,可以直接用如下形式调用 Test.method();
4 回复
发布于 2021-05-05 21:31

A是静态方法,可以通过类名.方法来调用

B是public方法,调用前必须先实例化

C用法和b一样

D 抽象方法不能直接调用,必须有子类继承后实例化调用

A是静态方法,可以通过类名.方法来调用

B是public方法,调用前必须先实例化

C用法和b一样

D 抽象方法不能直接调用,必须有子类继承后实例化调用

3 回复
发布于 2020-03-05 16:53
静态方法,可以通过 类名.方法名 的形式调用
静态方法,可以通过 类名.方法名 的形式调用
2 回复
发布于 2022-03-31 18:48
类名调用的方法,需要这个方法是static修饰。
类名调用的方法,需要这个方法是static修饰。
2 回复
发布于 2021-12-04 16:16 来自Android客户端
A是静态方法,可以直接用如下形式调用 Test.method();  B是普通public方法,必须实例化类,Test test = new Test(); test.method();  C是protected方法,用法同B,只是对于其他的外部class,protected就变成private;  D是抽象方法,必须被子类继承并重写,然后调用的方式同B。  故答案:选 A
A是静态方法,可以直接用如下形式调用 Test.method();  B是普通public方法,必须实例化类,Test test = new Test(); test.method();  C是protected方法,用法同B,只是对于其他的外部class,protected就变成private;  D是抽象方法,必须被子类继承并重写,然后调用的方式同B。  故答案:选 A
2 回复
发布于 2018-10-24 13:02
选A
A、static修饰方法,方法属于类本身,可以类名调用。
B、正常的实例方法,公有方法,必须实例化对象才可以调用。
C、正常的实例方法,protected方法,必须实例化对象才可以调用
D、abstract修饰方法,方法不能有方法体。abstract修饰方法,方法必须在抽象类或者接口中。
选A
A、static修饰方法,方法属于类本身,可以类名调用。
B、正常的实例方法,公有方法,必须实例化对象才可以调用。
C、正常的实例方法,protected方法,必须实例化对象才可以调用
D、abstract修饰方法,方法不能有方法体。abstract修饰方法,方法必须在抽象类或者接口中。
2 回复
发布于 2018-08-07 20:58
static 是静态的 静态方法只能通过类名去调用
static 是静态的 静态方法只能通过类名去调用
点赞 回复
发布于 2023-04-23 19:46 吉林 来自Android客户端
Test.method,意思就是构造好了,直接调用的,就是static
Test.method,意思就是构造好了,直接调用的,就是static
点赞 回复
发布于 2022-07-12 11:01
收起
  • 1
  • 2
单选题
Java
2.
类声明中,声明一个类不能再被继承的关键字是()
A
public
B
abstract
C
final
D
static
正确答案:C
你的答案:未作答
官方解析:
final关键字在Java中可以修饰类、方法和变量。当使用final修饰一个类时,表示该类不能被其他类继承,这是final关键字的一个重要用途。

分析所有选项:
A. public是访问权限修饰符,用于控制类、方法和变量的访问范围,不能阻止类被继承

B. abstract是抽象类关键字,用于声明抽象类,抽象类恰恰是用来被继承的,与题目要求相反

C. final是正确答案,因为它可以修饰类并阻止该类被继承。例如Java中的String类就是一个final类,不能被继承

D. static用于声明静态成员,表示该成员属于类而不是实例,与防止类被继承无关

补充说明:
使用final修饰类的主要目的是出于安全性考虑,可以确保类的实现不会被子类破坏或篡改。这在一些核心类库中经常使用,如String、Integer等包装类都是final类。当我们需要设计不可被继承的类时,就应该使用final关键字。
知识点:Java、JavaSE
题友讨论(29)
static的类可以被继承吗
static的类可以被继承吗
点赞 回复
发布于 2015-08-21 16:26
static的类是内部类,可以被任何有该内部类访问权限的其他类继承,包括静态、非静态、局部、匿名内部类和外部类
static的类是内部类,可以被任何有该内部类访问权限的其他类继承,包括静态、非静态、局部、匿名内部类和外部类
点赞 回复
发布于 2015-08-21 20:32
0
恩恩 试了 确实可以 之前的认知有问题,以为静态方法继承时被隐藏了 就以为静态类不能被继承
恩恩 试了 确实可以 之前的认知有问题,以为静态方法继承时被隐藏了 就以为静态类不能被继承
点赞 回复
发布于 2015-09-03 10:12
0
选C。
所有final修饰的类,均不可以被继承。
public是公有类,是可以被任何类继承的。
abstract是抽象类,只要子类实现了此抽象类的抽象方法,就可以继承。
static类是内部类,可以被外部类甚至静态内部类继承。不过继承要实现其构造方法,如果有的话。
选C。
所有final修饰的类,均不可以被继承。
public是公有类,是可以被任何类继承的。
abstract是抽象类,只要子类实现了此抽象类的抽象方法,就可以继承。
static类是内部类,可以被外部类甚至静态内部类继承。不过继承要实现其构造方法,如果有的话。
点赞 回复
发布于 2015-07-25 15:26
静态内部类,受教了
静态内部类,受教了
点赞 回复
发布于 2017-06-07 22:07
0
静态内部类也是可以被继承的。
package com.package1;

import com.package1.Person.Sun;

public  class Person{

static class Sun{}

}
class Ak extends Sun{}

静态内部类也是可以被继承的。
package com.package1;

import com.package1.Person.Sun;

public  class Person{

static class Sun{}

}
class Ak extends Sun{}

点赞 回复
发布于 2016-10-18 21:47
java没有static class,那是C#的东东 
ublic static void main不是静态类,它是静态方法。
静态的东西,一定是一个类的成员,也就是说,静态类首先是内部类。

java没有static class,那是C#的东东 
ublic static void main不是静态类,它是静态方法。
静态的东西,一定是一个类的成员,也就是说,静态类首先是内部类。

点赞 回复
发布于 2015-04-21 15:20
C
 1.final修饰变量,则等同于常量
2.final修饰方法中的参数,称为最终参数。
3.final修饰类,则类不能被继承
4.final修饰方法,则方法不能被重写。



C
 1.final修饰变量,则等同于常量
2.final修饰方法中的参数,称为最终参数。
3.final修饰类,则类不能被继承
4.final修饰方法,则方法不能被重写。



8 回复
发布于 2015-09-04 14:38
final修饰的方法不能被重写,类不可被继承,修饰的变量值不可被修改
final修饰的方法不能被重写,类不可被继承,修饰的变量值不可被修改
点赞 回复
发布于 2019-05-06 15:56
funal修饰不可继承类
funal修饰不可继承类
点赞 回复
发布于 2019-05-06 01:15
对 final 关键字的理解。
首先从 final 关键字使用的地方入手:
1、final 修饰类,表示该类不允许被继承,因此 C 是对的。
2、final 修饰方法,表示该方法不能被重写(override),注意:被 final 修饰的方法,仍然支持重载(overload),测试代码如下:
public class TestFinal {

    public static void main(String[] args) {
        TestFinal tf = new TestFinal();
        tf.print("我是字符串");
        tf.print(123);
    }

    public final void print(String str) {
        System.out.println("字符串:" + str);
    }

    public final void print(int num) {
        System.out.println("int数字:" + num);
    }

}
3、final 修饰成员属性,近似地理解为常量,该成员属性一旦被赋值,将不允许被修改,一般搭配 static 一起食用;
4、final 修饰局部变量,效果同3,只不过生效作用域仅在局部有效。

然后再来看看其他的选项:
(1)public 修饰的是对该类的访问权限,能否继承一个类,前提条件要能访问到这个类,public 对外界提供了访问该类的访问权限。
(2)abstract 可以修饰方法或者类,表示抽象方法或抽象类,抽象的目的就是为了让子类继承并具体实现。
(3)static 修饰类,会是一个静态内部类的情况,这个静态内部类可以被外部类的子类继承。
对 final 关键字的理解。
首先从 final 关键字使用的地方入手:
1、final 修饰类,表示该类不允许被继承,因此 C 是对的。
2、final 修饰方法,表示该方法不能被重写(override),注意:被 final 修饰的方法,仍然支持重载(overload),测试代码如下:
public class TestFinal {

    public static void main(String[] args) {
        TestFinal tf = new TestFinal();
        tf.print("我是字符串");
        tf.print(123);
    }

    public final void print(String str) {
        System.out.println("字符串:" + str);
    }

    public final void print(int num) {
        System.out.println("int数字:" + num);
    }

}
3、final 修饰成员属性,近似地理解为常量,该成员属性一旦被赋值,将不允许被修改,一般搭配 static 一起食用;
4、final 修饰局部变量,效果同3,只不过生效作用域仅在局部有效。

然后再来看看其他的选项:
(1)public 修饰的是对该类的访问权限,能否继承一个类,前提条件要能访问到这个类,public 对外界提供了访问该类的访问权限。
(2)abstract 可以修饰方法或者类,表示抽象方法或抽象类,抽象的目的就是为了让子类继承并具体实现。
(3)static 修饰类,会是一个静态内部类的情况,这个静态内部类可以被外部类的子类继承。
点赞 回复
发布于 2018-02-24 10:51


点赞 回复
发布于 2017-11-20 19:16
final修饰类,方法,变量:final修饰类,该类不能被继承,final修饰方法,该方法不能被重写,final修饰变量,该变量不能被重新赋值

final修饰类,方法,变量:final修饰类,该类不能被继承,final修饰方法,该方法不能被重写,final修饰变量,该变量不能被重新赋值

点赞 回复
发布于 2017-11-12 09:17
收起
  • 1
  • 2
  • 3
单选题
Java
3.

队列(Queue)是先进先出的。(  )



A
正确
B
错误
正确答案:A
你的答案:未作答
官方解析:
队列是一种特殊的线性表数据结构,具有先进先出(First In First Out, FIFO)的特点。队列的基本操作包括在队尾插入元素(入队)和在队头删除元素(出队)。这种特性决定了最先进入队列的元素必定最先被处理和移出队列。

可以用生活中排队的例子来理解:人们按照到达的先后顺序在队尾排队,最先到达的人在队头,也最先被服务。这就体现了队列"先进先出"的核心特征。

选项B错误,因为它否定了队列的这一基本特性。队列作为一种基础的数据结构,其先进先出的特性是其最本质的属性,这一点在计算机科学中是公认的定义。

在实际应用中,队列被广泛应用于:
- 操作系统的进程调度
- 网络数据包的传输
- 打印任务的处理
- 消息队列系统
这些应用都依赖于队列的先进先出特性来保证处理顺序的公平性和可预测性。
知识点:Java
题友讨论(53)
先进先出的线性表,如果是双端队列那就
先进先出的线性表,如果是双端队列那就
1 回复
发布于 2017-05-18 22:41
106 回复
发布于 2017-05-24 14:42
我***道地笑了
我***道地笑了
10 回复
发布于 2017-08-01 14:20
0
6666
6666
4 回复
发布于 2017-08-08 15:03
0
展开15条回复
举个栗子,可以这样理解: 1.队列:先进先出。很好理解就是排队。 2.栈:后进先出。就像堆放在桌子上的一碟碟盘子,最后放的,肯定是最先拿的。
举个栗子,可以这样理解: 1.队列:先进先出。很好理解就是排队。 2.栈:后进先出。就像堆放在桌子上的一碟碟盘子,最后放的,肯定是最先拿的。
33 回复
发布于 2020-01-24 15:41
精辟
精辟
点赞 回复
发布于 2020-08-07 17:52
0
很形象,赞一个
很形象,赞一个
点赞 回复
发布于 2020-08-27 00:35
0
展开4条回复
队列先进先出,栈先进后出
队列先进先出,栈先进后出
17 回复
发布于 2017-05-27 10:41
队列 就相当于 火车 过洞,栈相当于装子弹
队列 就相当于 火车 过洞,栈相当于装子弹
5 回复
发布于 2020-04-04 23:51
队列不就是先进先出的么?
队列不就是先进先出的么?
3 回复
发布于 2017-05-18 15:46
+1
+1
点赞 回复
发布于 2017-05-18 21:00
0
双端队列两端都可以出那也可以实现先进后出吧
双端队列两端都可以出那也可以实现先进后出吧
点赞 回复
发布于 2020-01-15 13:51
0
队列:先进先出(水管)
栈:后进先出(**)
队列:先进先出(水管)
栈:后进先出(**)
2 回复
发布于 2020-07-10 10:14
很形象
很形象
点赞 回复
发布于 2021-06-17 09:51
0
下面让MC枫少为您解答,后面的观众,你们的双手举过头顶,让我看到你们的双手.记住一句话,队列先进先出,栈后进先出
下面让MC枫少为您解答,后面的观众,你们的双手举过头顶,让我看到你们的双手.记住一句话,队列先进先出,栈后进先出
2 回复
发布于 2020-04-03 13:58
大佬,我总能在牛人堂看到您位居榜首
大佬,我总能在牛人堂看到您位居榜首
点赞 回复
发布于 2022-07-18 17:42
0
队列就像排队,先来先得
栈就像向一个长杯子里放入球,最先放入的,要把它上面的全取出来,才能取出它
队列就像排队,先来先得
栈就像向一个长杯子里放入球,最先放入的,要把它上面的全取出来,才能取出它
2 回复
发布于 2019-04-27 11:13
队列先进先出 栈 先进后出
队列先进先出 栈 先进后出
点赞 回复
发布于 2023-03-02 20:45 天津 来自Android客户端
收起
  • 1
  • 2
  • 3
单选题
Java
4.
下列哪个语句语法正确?(
A
byte y = 11; byte x = y +y;
B
String x = new Object();
C
Object x = new String(“Hellow”);
D
int a [11] = new int [11];
正确答案:C
你的答案:未作答
官方解析:
这道题目主要考察Java中变量声明、对象创建和向上转型的知识点。C选项是正确的,因为String是Object的子类,根据面向对象的多态性原则,父类引用可以指向子类对象,这种向上转型是合法的。

分析其他选项:

A错误:byte类型变量进行加法运算时会自动提升为int类型,所以y+y的结果是int类型,不能直接赋值给byte类型的变量x。需要进行强制类型转换,正确写法应该是:byte x = (byte)(y + y)。

B错误:String是Object的子类而不是父类,不能将父类对象直接赋值给子类引用。这种向下转型需要进行显式的类型转换,并且在运行时可能会抛出ClassCastException。

D错误:数组声明的语法不正确。正确的数组声明方式应该是:int[] a = new int[11]或int a[] = new int[11]。方括号应该紧跟类型或变量名,而不是直接放数组大小。

通过这道题可以看出Java的类型转换规则和数组声明语法的重要性。在编程中要特别注意这些基础语法规则。
知识点:Java
题友讨论(16)
选C。该题考查的是数据类型转换以及转换原则和取值范围
A选项属于赋值和算术运算的转换:byte取值范围-128~127,所以byte y = 11正确;byte x = y +y基本就是先转换为高位数据类型,再参加运算,结果也是最高位的数据类型, byte short char运算会转换为int,所以错误。
B选项是多态的条件应用:1.要有继承;2.要有重写;3.父类引用指向子类对象。Object是一切类的基类,正确的写法应该是:Object x=new String()。所以B选项错误。
D选项声明数组变量的错误,正确的应该是int a []或者int[] a。所以D错误。
选C。该题考查的是数据类型转换以及转换原则和取值范围
A选项属于赋值和算术运算的转换:byte取值范围-128~127,所以byte y = 11正确;byte x = y +y基本就是先转换为高位数据类型,再参加运算,结果也是最高位的数据类型, byte short char运算会转换为int,所以错误。
B选项是多态的条件应用:1.要有继承;2.要有重写;3.父类引用指向子类对象。Object是一切类的基类,正确的写法应该是:Object x=new String()。所以B选项错误。
D选项声明数组变量的错误,正确的应该是int a []或者int[] a。所以D错误。

48 回复
发布于 2019-04-13 17:42
这道题选C,容易错选为A
A.这里考察的是 byte short char参与运算时会转换为int的性质后半句y+y的结果会是一个ing类型的值,再将int类型赋值给byte类型当然不对
B.这里考察的是父类对象指向子类实例。Object是任意类的父类,它应该在左边,写成Object x=new String()才是对的
C.考点同B选项一样,是正确的
D.在java中我们对于数组的声明可以是int[] a=new int[x]或者int a[]=new int[],但是无论哪种,等号左边的括号都是不能填写数字
这道题选C,容易错选为A
A.这里考察的是 byte short char参与运算时会转换为int的性质后半句y+y的结果会是一个ing类型的值,再将int类型赋值给byte类型当然不对
B.这里考察的是父类对象指向子类实例。Object是任意类的父类,它应该在左边,写成Object x=new String()才是对的
C.考点同B选项一样,是正确的
D.在java中我们对于数组的声明可以是int[] a=new int[x]或者int a[]=new int[],但是无论哪种,等号左边的括号都是不能填写数字
29 回复
发布于 2021-12-20 20:08
选C
【分析】
A选项:java中byte、short类型相加的时候,都会自动提升到int类型的,所以byte y = 11 是正确的,但是byte x = y + y需要进行类型转换,正确写法:byte x = (byte)(y + y)
B选项:object是父类,不能用子类对象申请父类的空间,因此错误,object x = new String() 是可以的。
C选项:由上述B可知,父类对象申请子类的空间是可以的。正确。
D选项:创建数组时new了一定大小的空间,则左式不规定数组的容量,因此是错误的,应当为:
int a[] = new int[11]
选C
【分析】

A选项:java中byte、short类型相加的时候,都会自动提升到int类型的,所以byte y = 11 是正确的,但是byte x = y + y需要进行类型转换,正确写法:byte x = (byte)(y + y)
B选项:object是父类,不能用子类对象申请父类的空间,因此错误,object x = new String() 是可以的。
C选项:由上述B可知,父类对象申请子类的空间是可以的。正确。
D选项:创建数组时new了一定大小的空间,则左式不规定数组的容量,因此是错误的,应当为:
int a[] = new int[11]
13 回复
发布于 2019-04-14 09:49
C
A:X要强制转换类型为byte
B:不能把父类对象赋给子类,范围可以由抽象到具体,但不能反过来 D:数组声明不需要指定长度
C
A:X要强制转换类型为byte
B:不能把父类对象赋给子类,范围可以由抽象到具体,但不能反过来
D:数组声明不需要指定长度
5 回复
发布于 2019-04-13 17:29
这个知识点忘记了,byte,short,char做远算时会自动转为int类型。
这个知识点忘记了,byte,short,char做远算时会自动转为int类型。
3 回复
发布于 2022-01-04 08:49 来自iOS客户端
声明数组时[]中不能有数字
声明数组时[]中不能有数字
1 回复
发布于 2022-09-11 14:05 福建 来自Android客户端
选C
A错,byte y = 11 是没有问题的。问题出在byte x = y + y; byte型的变量相加时会自动转换为int型计算。所以y+y结果是int型,此处用一个byte类型的x来接收是错误的。正确的语法应该是 byte x= (byte)(y+y) 使用强制类型转换,来得到byte类型的结果
B错,String的父类是Object,不能把父类指向子类。只能子类指向父类。Object x = new String() 这种做法才可行
C正确! 恰好和B相反。子类可以指向父类。
D错,数组的基础知识。定义数组时,分静态初始化和动态初始化。 如果需要指定大小 应该这样写 int[] a = new int[11];

选C
A错,byte y = 11 是没有问题的。问题出在byte x = y + y; byte型的变量相加时会自动转换为int型计算。所以y+y结果是int型,此处用一个byte类型的x来接收是错误的。正确的语法应该是 byte x= (byte)(y+y) 使用强制类型转换,来得到byte类型的结果
B错,String的父类是Object,不能把父类指向子类。只能子类指向父类。Object x = new String() 这种做法才可行
C正确! 恰好和B相反。子类可以指向父类。
D错,数组的基础知识。定义数组时,分静态初始化和动态初始化。 如果需要指定大小 应该这样写 int[] a = new int[11];

1 回复
发布于 2022-06-22 11:01
byte chart short 在进行运算的时候会自动转化为int类型
byte chart short 在进行运算的时候会自动转化为int类型
1 回复
发布于 2021-12-01 23:05
我测,这题你就不讲究中文符号了,前面刷到的题你就讲究?
我测,这题你就不讲究中文符号了,前面刷到的题你就讲究?
点赞 回复
发布于 2023-08-04 20:15 山东
不能把父类对象赋给子类,范围可以由抽象到具体,但不能反过来
不能把父类对象赋给子类,范围可以由抽象到具体,但不能反过来
点赞 回复
发布于 2022-11-28 14:06 江苏
收起
  • 1
  • 2
单选题
数据库
5.
从 E-R 模型向关系模型转换时,一个 M:N 联系转换为关系模式时,该关系模式的主码是( )。
A
M 端实体的主码
B
N 端实体的主码
C
M 端实体的主码与 N 端实体的主码组合
D
重新选取其他属性
正确答案:C
你的答案:未作答
官方解析:
在 E-R 模型转换为关系模型时,M:N(多对多)联系的转换是一个重要知识点。C 选项是正确的,因为多对多联系转换为关系模式时,需要将参与联系的两个实体的主码组合作为新关系的主码。

原因如下:
1. M:N 联系转换时会创建一个新的关系模式
2. 新关系必须能唯一标识每个联系实例
3. 由于是多对多关系,单独使用任何一端实体的主码都无法唯一标识联系
4. 只有将两端实体的主码组合才能唯一确定一个联系实例

分析其他选项:
A错误:仅使用 M 端实体的主码不足以唯一标识联系,因为一个 M 端实体可以与多个 N 端实体建立联系
B错误:同理,仅使用 N 端实体的主码也不能唯一标识联系,因为一个 N 端实体可以与多个 M 端实体建立联系
D错误:重新选取其他属性作为主码是不合适的,因为联系的本质就是连接两个实体,用两端实体的主码组合才是最合理的选择

这种转换方式保证了数据的完整性和唯一性,是关系数据库设计中的标准做法。
知识点:数据库、SQL+MySQL
题友讨论(6)
主码就是主键,primary key
主码就是主键,primary key
点赞 回复
发布于 2019-03-03 20:54
比如说,汽车 和 零件,一辆 汽车 有很多种 零件 组成,但是一种 零件 也可以被装入多辆 汽车 中。
它们是 M 比 N 的关系。
只说某辆车或只说某种零件,都没能确定是哪个零件。
只有说到 某一辆车某一个零件,才能确定是哪个零件。
也就是 M 端实体的主码与 N 端实体的主码组合。
比如说,汽车 和 零件,一辆 汽车 有很多种 零件 组成,但是一种 零件 也可以被装入多辆 汽车 中。
它们是 M 比 N 的关系。
只说某辆车或只说某种零件,都没能确定是哪个零件。
只有说到 某一辆车某一个零件,才能确定是哪个零件。
也就是 M 端实体的主码与 N 端实体的主码组合。
36 回复
发布于 2020-03-18 17:37
讲解的很清楚点赞
讲解的很清楚点赞
1 回复
发布于 2020-03-31 09:13
0
妙啊
妙啊
点赞 回复
发布于 2023-04-01 20:42 湖南
0
  1. 对于多对多的二元联系,参与实体集的主码属性的并集成为主码
  2. 对于一对一的二元联系集,任何一个实体集的主码都可以选作主码
  3. 对于一对多或多对一的二元联系集,‘多’的那一方的实体集的主码构成主码
  1. 对于多对多的二元联系,参与实体集的主码属性的并集成为主码
  2. 对于一对一的二元联系集,任何一个实体集的主码都可以选作主码
  3. 对于一对多或多对一的二元联系集,‘多’的那一方的实体集的主码构成主码
16 回复
发布于 2018-08-20 21:26
C
C
1 回复
发布于 2018-01-09 13:08
收起
单选题
Java
6.
Java 中,下面代码会出现编译错误的是()
A
int[] arr = new int[]{1, 2, 3};
B
int[] arr = {1, 2, 3};
C
int arr[] = new int[3];
D
int arr[3] = {1, 2, 3};
正确答案:D
你的答案:未作答
官方解析:
D选项中的写法是错误的。在Java中声明数组时,不能在中括号内指定数组长度。正确的数组声明和初始化方式有以下几种:

分析各选项:
A正确: int[] arr = new int[]{1, 2, 3};
这是完整的数组声明和初始化写法,使用new关键字并在花括号中指定初始值。

B正确: int[] arr = {1, 2, 3};
这是简化的数组声明和初始化写法,可以省略new int[]部分。

C正确: int arr[] = new int[3];
这是声明指定长度的数组的写法,创建一个长度为3的整型数组,每个元素默认值为0。

D错误: int arr[3] = {1, 2, 3};
这种写法是错误的,Java不支持在声明数组变量时在方括号中指定长度。正确的做法应该是使用new来指定数组长度,或者直接使用初始化列表。

这是Java与C/C++的一个重要区别。在C/C++中允许int arr[3] = {1,2,3}这样的写法,但Java中不允许。Java要求使用new关键字来分配数组空间。
知识点:Java
题友讨论(4)
3 回复
发布于 2024-12-23 14:44 福建 来自Android客户端
“茴”的四种写法
“茴”的四种写法
1 回复
发布于 2024-12-27 14:55 湖北
真实,实际开发永远只有一种标准
真实,实际开发永远只有一种标准
点赞 回复
发布于 05-01 12:39 河南 来自Android客户端
0
不支持声明时指定长度
不支持声明时指定长度
点赞 回复
发布于 05-16 20:14 广东 来自Android客户端
收起
单选题
Java
7.
以下多线程对int型变量x的操作,哪个不需要进行同步()
A
++x
B
x=y
C
x++
D
x=1
正确答案:D
你的答案:未作答
官方解析:
在多线程编程中,判断一个操作是否需要同步的关键是看该操作是否是原子操作。x=1是一个简单的赋值操作,它是原子性的,不会被其他线程打断,因此不需要同步。

分析其他选项:

A. ++x为复合操作,实际包含了三个步骤:读取x的值、将值加1、将结果写回x。在这个过程中可能被其他线程打断,造成结果不准确,需要同步。

B. x=y也需要同步,因为y的值可能在读取过程中被其他线程修改,导致赋值结果不是预期的值。

C. x++和++x类似,也是复合操作,包含读取、递增、写回三个步骤,同样需要同步来保证操作的原子性。

总结:
只有对变量的简单赋值(如x=1)是原子操作,不需要同步。而涉及到读取-修改-写回这样的复合操作,都需要通过同步机制(如synchronized、原子类等)来保证线程安全。这是因为复合操作在执行过程中可能被其他线程打断,导致数据不一致。
知识点:Java、JavaSE
题友讨论(116)
同步是害怕在操作过程的时候被其他线程也进行读取操作,一旦是原子性的操作就不会发生这种情况。
因为一步到位的操作,其他线程不可能在中间干涉。另外三项都有读取、操作两个步骤,而X=1则是原子性操作。
同步是害怕在操作过程的时候被其他线程也进行读取操作,一旦是原子性的操作就不会发生这种情况。
因为一步到位的操作,其他线程不可能在中间干涉。另外三项都有读取、操作两个步骤,而X=1则是原子性操作。
388 回复
发布于 2016-01-05 20:44
5 回复
发布于 2016-08-30 11:34
0
什么是原子操作,能否通俗的讲述一下,我看网上的也理解不了,谢谢了
什么是原子操作,能否通俗的讲述一下,我看网上的也理解不了,谢谢了
3 回复
发布于 2018-10-29 16:48
0
展开10条回复
前三个都至少需要先读取,再操作,非原子操作。而D的话,直接赋值。
前三个都至少需要先读取,再操作,非原子操作。而D的话,直接赋值。
215 回复
发布于 2015-11-05 17:33
赞!
赞!
点赞 回复
发布于 2017-03-18 09:30
0
ABC不是原子性操作,例如想x++,先获取x的值,自增一,然后再把值赋给x,三步,中间任何一步执行时都可能被其他线程访问或者修改。所以需要同步。
ABC不是原子性操作,例如想x++,先获取x的值,自增一,然后再把值赋给x,三步,中间任何一步执行时都可能被其他线程访问或者修改。所以需要同步。
167 回复
发布于 2015-11-09 19:32
答案b为什么需要同步操作?可否举例说明
答案b为什么需要同步操作?可否举例说明
1 回复
发布于 2016-03-06 08:53
0
答案b为什么需要同步操作?可否举例说明
答案b为什么需要同步操作?可否举例说明
点赞 回复
发布于 2016-03-24 15:45
0
展开5条回复
做过一些微架构的东西,大家说的都挺好,我从指令集方面说说。
D项通过编译后,应该是:mov 1,eax。x对应寄存器eax,所以是原子操作;
而其他几项,都需要先读取x即load eax,x(比如将x读入eax寄存器中),然后在修改;但是多线程下,其他线程也可以读x啊,所以就存在同步问题了。
对了,同步就是将读取x内存区的地址总线申请独享!
做过一些微架构的东西,大家说的都挺好,我从指令集方面说说。
D项通过编译后,应该是:mov 1,eax。x对应寄存器eax,所以是原子操作;
而其他几项,都需要先读取x即load eax,x(比如将x读入eax寄存器中),然后在修改;但是多线程下,其他线程也可以读x啊,所以就存在同步问题了。
对了,同步就是将读取x内存区的地址总线申请独享!
38 回复
发布于 2016-08-01 12:24
mov 1,eax 什么意思。
mov 1,eax 什么意思。
点赞 回复
发布于 2016-10-12 18:42
0
常量是一步到位的,心塞
常量是一步到位的,心塞
点赞 回复
发布于 2017-07-01 10:32
0
展开4条回复
前三个不是原子操作,最后一个直接赋值,为原子操作。
原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为"不可被中断的一个或一系列操作" 。原子操作就是不可再分的操作。在多线程程序中原子操作是一个非常重要的概念,它常常用来实现一些同步机制。由不可分性可知,原子性是拒绝多线程操作的(只有分解为多步操作,多个线程才能对其操作:就像一个盒子里有多个兵乓球,多个人能够从盒子里拿乒乓球;如果盒子只有一个兵乓球,一个人拿的话,其他人就拿不到了;这就是原子性,乒乓球就具有原子性,人就相当于原子)
前三个不是原子操作,最后一个直接赋值,为原子操作。
原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为"不可被中断的一个或一系列操作" 。原子操作就是不可再分的操作。在多线程程序中原子操作是一个非常重要的概念,它常常用来实现一些同步机制。由不可分性可知,原子性是拒绝多线程操作的(只有分解为多步操作,多个线程才能对其操作:就像一个盒子里有多个兵乓球,多个人能够从盒子里拿乒乓球;如果盒子只有一个兵乓球,一个人拿的话,其他人就拿不到了;这就是原子性,乒乓球就具有原子性,人就相当于原子)
25 回复
发布于 2016-06-06 14:05
++ x ,  x ++这样的操作在多线程环境下是需要同步的。 因为X86会按三条指令的形式来处理这种语句:从内存中读x的值到寄存器中,对寄存器加1,再把新值写回x所处的内存地址。 而对于x=y这样的操作,从从内存中读取x值和y值都是原子操作的,但是两个合起来就变成非原子操作了,因此也需要同步。 x=1只需将1写入内存一条指令,属于原子操作,因此不需要同步。
++ x ,  x ++这样的操作在多线程环境下是需要同步的。 因为X86会按三条指令的形式来处理这种语句:从内存中读x的值到寄存器中,对寄存器加1,再把新值写回x所处的内存地址。 而对于x=y这样的操作,从从内存中读取x值和y值都是原子操作的,但是两个合起来就变成非原子操作了,因此也需要同步。 x=1只需将1写入内存一条指令,属于原子操作,因此不需要同步。
20 回复
发布于 2017-03-23 16:14
稳~
稳~
点赞 回复
发布于 2017-09-23 00:14
0
D
A、B、C选项,一个线程对x的修改都会影响另一个线程对x值的读取
D
A、B、C选项,一个线程对x的修改都会影响另一个线程对x值的读取
6 回复
发布于 2015-11-04 19:30
x=y
隐含着需要读取y才能赋值给x,存在数据依赖,需要禁止重排序,不然可能有同步问题
x=y
隐含着需要读取y才能赋值给x,存在数据依赖,需要禁止重排序,不然可能有同步问题
5 回复
发布于 2018-01-01 20:28
原来理解能力较弱,能详细解释一下吗
原来理解能力较弱,能详细解释一下吗
点赞 回复
发布于 2018-03-27 08:29
0
x86 arm常见架构的处理器都不允许对存在数据依赖的变量进行重排序,数据依赖->当前元素的值依赖于前一个变量,重排序->指cpu为了流水线达到减小间歇,而对取值译码等指令进行乱序,造成当前程序的指令的取值指令可能比你实际看得到的晚或者早,java通过jmm的happenbefore来保证内存可见性,CPU则通过read store内存屏障阻止重排序。当然还有编译器和jvm重排序 。
x86 arm常见架构的处理器都不允许对存在数据依赖的变量进行重排序,数据依赖->当前元素的值依赖于前一个变量,重排序->指cpu为了流水线达到减小间歇,而对取值译码等指令进行乱序,造成当前程序的指令的取值指令可能比你实际看得到的晚或者早,java通过jmm的happenbefore来保证内存可见性,CPU则通过read store内存屏障阻止重排序。当然还有编译器和jvm重排序 。
点赞 回复
发布于 2018-03-27 08:34
0
展开1条回复
++ x x ++这样的操作在多线程环境下是需要同步的。因为X86会按三条指令的形式来处理这种语句:从内存中读x的值到寄存器中,对寄存器加1,再把新值写回x所处的内存地址。而对于x=y这样的操作,从从内存中读取x值和y值都是原子操作的,但是两个合起来就变成非原子操作了,因此也需要同步。x=1只需将1写入内存一条指令,属于原子操作,因此不需要同步。
++ x x ++这样的操作在多线程环境下是需要同步的。因为X86会按三条指令的形式来处理这种语句:从内存中读x的值到寄存器中,对寄存器加1,再把新值写回x所处的内存地址。而对于x=y这样的操作,从从内存中读取x值和y值都是原子操作的,但是两个合起来就变成非原子操作了,因此也需要同步。x=1只需将1写入内存一条指令,属于原子操作,因此不需要同步。
5 回复
发布于 2017-03-03 22:00
原子性操作:一个或某几个操作只能在一个线程执行完之后,另一个线程才能开始执行该操作,也就是说这些操作是不可分割的,线程不能在这些操作上交替执行。
我们对于不具有原子性的操作,我们必须对其进行同步(synchronized、lock等),使得这些操作只能由一个线程执行完后,其他线程才能执行这些操作。
x++与++x,首先,会获取x的值,创建一个临时变量temp,将x+1赋值给temp,随后将temp的值重新赋值给x,涉及读取等多个操作,不是原子性操作,需要同步;
x=y,读取y的值,将这个值赋予x,同样有读取操作莫不是原子性操作。
x=1,直接将1赋予x,是原子性操作。
原子性操作:一个或某几个操作只能在一个线程执行完之后,另一个线程才能开始执行该操作,也就是说这些操作是不可分割的,线程不能在这些操作上交替执行。
我们对于不具有原子性的操作,我们必须对其进行同步(synchronized、lock等),使得这些操作只能由一个线程执行完后,其他线程才能执行这些操作。
x++与++x,首先,会获取x的值,创建一个临时变量temp,将x+1赋值给temp,随后将temp的值重新赋值给x,涉及读取等多个操作,不是原子性操作,需要同步;
x=y,读取y的值,将这个值赋予x,同样有读取操作莫不是原子性操作。
x=1,直接将1赋予x,是原子性操作。
4 回复
发布于 2020-04-18 00:06
收起
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 9
单选题
Linux
8.
小明因为疫情需要在家办公,期间需要将自己计算机本地的文件夹(命名为 nowcoder)所有文件拷贝到实验室的远程服务器上(用户名为 root,ip 为 192.168.7.2)的 /file/ 目录下,可以用下面哪个命令实现()
A
scp -r /nowcoder/ root@192.168.7.2:/file/
B
scp -r root@192.168.7.2:/file/ /nowcoder/
C
cp -r /nowcoder/ root@192.168.7.2:/file/
D
cp -r root@192.168.7.2:/file/ /nowcoder/
正确答案:A
你的答案:未作答
官方解析:
本题考查Linux的文件权限。
scp命令的使用规范是:scp -r拷贝源地址 拷贝目的地址,其中远程服务器的文件路径表示方式为:服务器名@IP:文件路径。A选项表示将本地文件拷贝至远程服务器;B选项表示将远程服务器的文件拷贝至本地,A正确,B错误。而cp 命令不能实现拷贝至远程服务器的目的,C、D错误,故题解为A。
知识点:Linux
题友讨论(0)
单选题
数据库
9.

在数据库的表定义中,限制成绩属性列的取值在0100的范围内,属于数据的( )约束。

A
实体完整性
B
参照完整性
C
用户自定义
D
用户操作
正确答案:C
你的答案:未作答
官方解析:
在数据库中,对于成绩属性列值的范围限制(0-100)属于用户自定义约束,因为这是根据具体业务需求而设定的数据约束规则。

分析其他选项:

A错误:实体完整性约束主要包括主键约束、唯一性约束等,用于保证实体的唯一标识,与属性值范围限制无关。

B错误:参照完整性约束用于维护表之间的关联关系,确保外键值的正确性,与单个属性的取值范围无关。

D错误:用户操作不是一种数据库约束类型,而是指用户对数据库进行的各种操作行为。

约束类型的知识点总结:
1. 实体完整性:确保表中记录的唯一性
2. 参照完整性:确保表间关联的正确性
3. 用户自定义完整性:根据具体应用环境定义的约束条件,包括属性值的范围限制、格式要求等
4. 域完整性:确保属性值满足数据类型、格式等基本要求

因此限制成绩在0-100范围内属于用户自定义的业务约束规则。
知识点:数据库
题友讨论(12)
四类数据完整性:
实体完整性,确保不出现完全相同的数据记录
区域完整性, 通过限制数据类型,检查约束,输入格式,外键约束,默认值,非空等体现
参考完整性,避免因一个数据表的记录改变而造成相关数据表内的数据变成无效值。
用户自定义完整性,用户自定义由用户根据实际应用中的需要自行定义。

题意为检查约束,属于域完整性,无选项。。因此选择用户自定义
四类数据完整性:
实体完整性,确保不出现完全相同的数据记录
区域完整性, 通过限制数据类型,检查约束,输入格式,外键约束,默认值,非空等体现
参考完整性,避免因一个数据表的记录改变而造成相关数据表内的数据变成无效值。
用户自定义完整性,用户自定义由用户根据实际应用中的需要自行定义。

题意为检查约束,属于域完整性,无选项。。因此选择用户自定义
21 回复
发布于 2017-05-09 16:10
老铁,找你确定实体完整性是这个? 实体完整性要求元组在组成主键的属性上不能有空值,如果出现空值,那么主键值就起不了唯一标识元祖的作用
老铁,找你确定实体完整性是这个? 实体完整性要求元组在组成主键的属性上不能有空值,如果出现空值,那么主键值就起不了唯一标识元祖的作用
1 回复
发布于 2020-01-10 18:35
0
实体完整性:主键 参照完整性:外键 用户自定义完整性:取值范围
实体完整性:主键 参照完整性:外键 用户自定义完整性:取值范围
19 回复
发布于 2020-03-27 21:20 来自Android客户端
(1) 实体完整性:指表中行的完整性。主要用于保证操作的数据(记录)非空、唯一且不重复。
(2) 域完整性: 是指数据库表中的列必须满足某种特定的数据类型或约束。其中约束又包括取值范围、精度等规定。表中的CHECK、FOREIGN KEY 约束和DEFAULT、 NOT NULL定义都属于域完整性的范畴。
(3)参照完整性: 属于表间规则。
(4) 用户定义完整性: 是对数据表中字段属性的约束, 用户定义完整性规则也称为域完整性规则 。包括字段的值域、字段的类型和字段的有效规则(如小数位数)等约束,是由确定关系结构时所定义的字段的属性决定的。如,百分制成绩的取值范围在0~100之间等。

(1) 实体完整性:指表中行的完整性。主要用于保证操作的数据(记录)非空、唯一且不重复。
(2) 域完整性: 是指数据库表中的列必须满足某种特定的数据类型或约束。其中约束又包括取值范围、精度等规定。表中的CHECK、FOREIGN KEY 约束和DEFAULT、 NOT NULL定义都属于域完整性的范畴。
(3)参照完整性: 属于表间规则。
(4) 用户定义完整性: 是对数据表中字段属性的约束, 用户定义完整性规则也称为域完整性规则 。包括字段的值域、字段的类型和字段的有效规则(如小数位数)等约束,是由确定关系结构时所定义的字段的属性决定的。如,百分制成绩的取值范围在0~100之间等。

5 回复
发布于 2017-07-04 15:30
用户定义完整性规则也称为域完整性规则 ,那(2)和(4)的区别是
用户定义完整性规则也称为域完整性规则 ,那(2)和(4)的区别是
点赞 回复
发布于 2019-09-03 10:43
0
C
C
1 回复
发布于 2022-09-01 10:41 广东 来自Android客户端
hxd加油
hxd加油
点赞 回复
发布于 2022-09-01 13:19 陕西 来自Android客户端
0
玩文字游戏啊,好吧。用户自定义后面缺了个完整性。语义变成,用户自定义。
玩文字游戏啊,好吧。用户自定义后面缺了个完整性。语义变成,用户自定义。
1 回复
发布于 2022-08-05 08:38 来自Android客户端
四类数据完整性

实体完整性,确保不出现完全相同的数据记录
区域完整性,通过限制数据类型,检查约束,外键约束,默认值

参考完整
四类数据完整性

实体完整性,确保不出现完全相同的数据记录
区域完整性,通过限制数据类型,检查约束,外键约束,默认值

参考完整
点赞 回复
发布于 2024-02-26 22:43 广东
实体完整性(Entity Integrity)。实体完整性指表中行的完整性。主要用于保证操作的数据(记录)非空、唯一且不重复。即实体完整性要求每个关系(表)有且仅有一个主键,每一个主键值必须唯一,而且不允许为“空”(NULL)或重复。
域完整性(Domain Integrity)是指数据库表中的列必须满足某种特定的数据类型或约束。其中约束又包括取值范围、精度等规定。表中的CHECK、FOREIGN KEY 约束和DEFAULT、 NOT NULL定义都属于域完整性的范畴。
参照完整性(Referential Integrity)属于表间规则。对于永久关系的相关表,在更新、插入或删除记录时,如果只改其一,就会影响数据的完整性。如删除父表的某记录后,子表的相应记录未删除,致使这些记录称为孤立记录。对于更新、插入或删除表间数据的完整性,统称为参照完整性
用户定义完整性User-defined Integrity是对数据表中字段属性的约束,用户定义完整性规则(User-defined integrity)也称域完整性规则。
实体完整性(Entity Integrity)。实体完整性指表中行的完整性。主要用于保证操作的数据(记录)非空、唯一且不重复。即实体完整性要求每个关系(表)有且仅有一个主键,每一个主键值必须唯一,而且不允许为“空”(NULL)或重复。
域完整性(Domain Integrity)是指数据库表中的列必须满足某种特定的数据类型或约束。其中约束又包括取值范围、精度等规定。表中的CHECK、FOREIGN KEY 约束和DEFAULT、 NOT NULL定义都属于域完整性的范畴。
参照完整性(Referential Integrity)属于表间规则。对于永久关系的相关表,在更新、插入或删除记录时,如果只改其一,就会影响数据的完整性。如删除父表的某记录后,子表的相应记录未删除,致使这些记录称为孤立记录。对于更新、插入或删除表间数据的完整性,统称为参照完整性
用户定义完整性User-defined Integrity是对数据表中字段属性的约束,用户定义完整性规则(User-defined integrity)也称域完整性规则。
点赞 回复
发布于 2021-08-14 17:02
数据库四类完整性: 实体完整性 域完整性 自定义完整性 参照完整性
数据库四类完整性: 实体完整性 域完整性 自定义完整性 参照完整性
点赞 回复
发布于 2021-04-18 17:10 来自Android客户端
B用户自定义
B用户自定义
点赞 回复
发布于 2017-05-09 17:55
收起
单选题
数据库
10.
以下那种操作是专门用于完成对数据库数据的查询的?
A
DCL
B
DDL
C
DML
D
DQL
正确答案:D
你的答案:未作答
官方解析:
SQL语言可以分为四大类:DCL、DDL、DML和DQL,每种类型都有其特定的用途。DQL(Data Query Language)数据查询语言专门用于数据查询,这正是D选项正确的原因。典型的DQL语句包括SELECT等,用于从数据库中检索数据。

分析其他选项:

A错误:DCL(Data Control Language)数据控制语言,主要用于控制数据库的访问权限,包括GRANT、REVOKE等语句,而不是用于查询。

B错误:DDL(Data Definition Language)数据定义语言,用于定义数据库结构,如CREATE、DROP、ALTER等,用于操作数据库对象的结构而不是查询数据。

C错误:DML(Data Manipulation Language)数据操作语言,包括INSERT、UPDATE、DELETE等,用于对数据库中的数据进行增删改操作,虽然也会涉及数据,但主要目的不是查询。

总的来说,虽然其他类型的SQL语句也可能需要查看数据,但专门用于查询数据的是DQL,它的核心功能就是帮助用户获取所需的数据信息。
知识点:数据库、SQL+MySQL、测试、后端开发、客户端开发、前端开发、人工智能/算法、数据、运维/技术支持
题友讨论(21)
C

数据库定义语言: DDL,数据库定义语言用于创建、修改和删除数据库内的数据结构。
数据库查询语言:DQL,数据查询语言用于从数据库中的一个或多个表中查询指定的数据。
数据操作语言:DML,用与修改数据库中的数据,包括插入、更新和删除数据。
数据控制语言:DCL,用于控制对数据库的访问。

其实查询的话, 应该也包含D
C

数据库定义语言: DDL,数据库定义语言用于创建、修改和删除数据库内的数据结构。
数据库查询语言:DQL,数据查询语言用于从数据库中的一个或多个表中查询指定的数据。
数据操作语言:DML,用与修改数据库中的数据,包括插入、更新和删除数据。
数据控制语言:DCL,用于控制对数据库的访问。

其实查询的话, 应该也包含D
12 回复
发布于 2015-01-06 19:39
SELECT不是应该包含在DML中吗?以下摘自oracle文档: Data manipulation language (DML) statements access and manipulate data in existing schema objects. These statements do not implicitly commit the current transaction. The data manipulation language statements are: CALL DELETE EXPLAIN PLAN INSERT LOCK TABLE MERGE SELECT UPDATE http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_1001.htm
SELECT不是应该包含在DML中吗?以下摘自oracle文档: Data manipulation language (DML) statements access and manipulate data in existing schema objects. These statements do not implicitly commit the current transaction. The data manipulation language statements are: CALL DELETE EXPLAIN PLAN INSERT LOCK TABLE MERGE SELECT UPDATE http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_1001.htm
点赞 回复
发布于 2016-09-13 09:31
0
SQL语言共分为四大类:数据查询语言(DQL)、数据定义语言(DDL)、数据操纵语言(DML)以及数据控制语言(DCL)。
其中数据操纵语言用于数据插入,更新和删除。
SQL语言共分为四大类:数据查询语言(DQL)、数据定义语言(DDL)、数据操纵语言(DML)以及数据控制语言(DCL)。
其中数据操纵语言用于数据插入,更新和删除。
点赞 回复
发布于 2015-09-23 11:30
DML (data manipulation language):
它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言
DDL (data definition language):
DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用
DCL (Data Control Language):
是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL  
 DQL( Data Query Language) 
数据查询语言,数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE
子句组成的查询块:
SELECT <字段名表>
FROM <表或视图名>
WHERE <查询条件>
DML (data manipulation language):
它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言
DDL (data definition language):
DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用
DCL (Data Control Language):
是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL  
 DQL( Data Query Language) 
数据查询语言,数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE
子句组成的查询块:
SELECT <字段名表>
FROM <表或视图名>
WHERE <查询条件>
40 回复
发布于 2016-08-01 14:16
总在你这 复制 结论 哎...好方便。
总在你这 复制 结论 哎...好方便。
点赞 回复
发布于 2016-08-03 14:21
0
觉得方便的话,点个赞,呵呵
觉得方便的话,点个赞,呵呵
点赞 回复
发布于 2016-08-03 14:59
0
展开8条回复
数据库定义语言: DDL,数据库定义语言用于创建、修改和删除数据库内的数据结构。
数据库查询语言:DQL,数据查询语言用于从数据库中的一个或多个表中查询指定的数据。
数据操作语言:DML,用与修改数据库中的数据,包括插入、更新和删除数据。
数据控制语言:DCL,用于控制对数据库的访问。
数据库定义语言: DDL,数据库定义语言用于创建、修改和删除数据库内的数据结构。
数据库查询语言:DQL,数据查询语言用于从数据库中的一个或多个表中查询指定的数据。
数据操作语言:DML,用与修改数据库中的数据,包括插入、更新和删除数据。
数据控制语言:DCL,用于控制对数据库的访问。
3 回复
发布于 2016-06-28 14:26
DQL基本结构是由SELECT子句,FROM子句,WHERE,是查询。DML包括插入、更新和删除1) 插入:INSERT;2) 更新:UPDATE;3) 删除:DELETE
DQL基本结构是由SELECT子句,FROM子句,WHERE,是查询。DML包括插入、更新和删除1) 插入:INSERT;2) 更新:UPDATE;3) 删除:DELETE
1 回复
发布于 2015-08-18 18:20
DML (数据操纵语言,Data Manipulation Language )
主要指数据的增删查改: Select\delete\update\insert\call
下次别说自己只会CRUD,也可以说是自己是DML工程师😂
DML (数据操纵语言,Data Manipulation Language )
主要指数据的增删查改: Select\delete\update\insert\call
下次别说自己只会CRUD,也可以说是自己是DML工程师😂
点赞 回复
发布于 2020-03-28 09:45
DML (data manipulation language): 
它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言 
DDL (data definition language): 
DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用 
DCL (Data Control Language): 
是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL  
 DQL( Data Query Language)  
数据查询语言,数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE 
DML (data manipulation language): 
它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言 
DDL (data definition language): 
DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用 
DCL (Data Control Language): 
是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL  
 DQL( Data Query Language)  
数据查询语言,数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE 
点赞 回复
发布于 2017-08-01 19:41
哎,第一题就错了
哎,第一题就错了
点赞 回复
发布于 2016-07-28 20:01
C D都是

C D都是

点赞 回复
发布于 2015-07-21 11:21
DQL基本结构是由SELECT子句,FROM子句,WHERE,是查询。DML包括插入、更新和删除
DQL基本结构是由SELECT子句,FROM子句,WHERE,是查询。DML包括插入、更新和删除
点赞 回复
发布于 2015-08-18 18:19
0
收起
单选题
Linux
11.

网络管理员编写了shell程序prog1.sh,测试时程序死循环无法结束,可以通过下列方式结束程序(      )

A

ctrl+C

B

esc

C

Alt F2 kill 进程ID

D

exit

正确答案:A
你的答案:未作答
官方解析:
在Linux/Unix系统中终止一个正在运行的shell脚本,最常用和有效的方法是使用Ctrl+C组合键,这个按键会发送SIGINT信号给当前运行的前台进程,使其终止执行。这也是A选项正确的原因。

分析其他选项:

B选项ESC键错误,因为ESC键在shell中主要用于切换命令行模式或取消当前输入,并不能终止正在运行的程序。

C选项"Alt F2 kill 进程ID"虽然理论上可以通过kill命令终止进程,但这种方式过于复杂,需要先切换到其他终端,然后查找进程ID再执行kill命令,操作步骤繁琐,不如Ctrl+C直接有效。

D选项exit命令错误,因为exit命令是用来退出当前shell会话的,而不能终止正在运行的shell脚本。当脚本处于死循环状态时,exit命令根本无法被执行到。

需要补充说明的是,除了Ctrl+C之外,还可以使用Ctrl+Z将进程暂停,或者从另一个终端使用kill命令强制终止进程,但在日常使用中,Ctrl+C是最简单直接的解决方案。
知识点:Linux
题友讨论(1)
ctrl + c 可以终止sh进程
ctrl + c 可以终止sh进程
1 回复
发布于 07-27 22:11 广东 来自iOS客户端
收起
单选题
SQL
数据库
12.
Mysql中表student_info(id,name,birth,sex),字段类型都是varchar,插入如下记录:('1014' , '张三' , '2002-01-06' , '男');
SQL错误的是()?
A
insert into student_info values('1014' , '张三' , '2002-01-06' , '男');
B
insert into table student_info values('1014' , '张三' , '2002-01-06' , '男');
C
insert into student_info(id,name,birth,sex) values('1014' , '张三' , '2002-01-06' , '男');
D
insert into student_info(id,name,sex,birth) values('1014' , '张三' , '男','2002-01-06' );
正确答案:B
你的答案:未作答
官方解析:
A插入全部字段时可以省略字段名;
B插入时,如果`table`不是表名,不能带table关键字,会报错;如果table就是表名,需要用`table`才行。
CD可以指定插入哪些字段,同时字段顺序与字段值顺序一致即可。
所以B错误。
知识点:数据库、SQL
题友讨论(19)

普通插入(全字段):INSERT INTO table_name VALUES (value1, value2, ...)

普通插入(限定字段):INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...)

多条一次性插入:INSERT INTO table_name (column1, column2, ...) VALUES (value1_1, value1_2, ...), (value2_1, value2_2, ...), ...

从另一个表导入:INSERT INTO table_name SELECT * FROM table_name2 [WHERE key=value]

普通插入(全字段):INSERT INTO table_name VALUES (value1, value2, ...)

普通插入(限定字段):INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...)

多条一次性插入:INSERT INTO table_name (column1, column2, ...) VALUES (value1_1, value1_2, ...), (value2_1, value2_2, ...), ...

从另一个表导入:INSERT INTO table_name SELECT * FROM table_name2 [WHERE key=value]

43 回复
发布于 2022-02-13 09:08
d没错吗,最后多了个逗号啊?
d没错吗,最后多了个逗号啊?
22 回复
发布于 2021-12-20 22:37 来自Android客户端
观察够仔细!
观察够仔细!
点赞 回复
发布于 2022-01-20 15:37
0
'2002-01-06' , '男' 是顺序颠倒了吧
'2002-01-06' , '男' 是顺序颠倒了吧
1 回复
发布于 2022-01-22 13:29
0
展开4条回复
表格插入字段不能用table,全字段可以省略字段名
表格插入字段不能用table,全字段可以省略字段名
6 回复
发布于 2023-02-14 23:50 广东
insert into table XXX values()
有个table别忘了
insert into table XXX values()
有个table别忘了
1 回复
发布于 2022-09-24 22:52 上海
这不是错误的嘛
这不是错误的嘛
1 回复
发布于 2022-10-11 15:28 黑龙江
0
多了个 table
多了个 table
点赞 回复
发布于 2023-10-12 01:44 陕西 来自Android客户端
CREATE/DROP/ALTER/TRUNCATE TABLE xxx
CREATE/DROP/ALTER/TRUNCATE TABLE xxx
点赞 回复
发布于 2023-07-23 19:52 上海 来自Android客户端
考察    ①插入语法的正确表达  ②实际需要的【不同添加数据方式】
考察    ①插入语法的正确表达  ②实际需要的【不同添加数据方式】
点赞 回复
发布于 2023-02-01 14:51 福建
插入全部字段时可以省略字段名
插入全部字段时可以省略字段名
点赞 回复
发布于 2022-08-14 20:41
D哪里错了😥
D哪里错了😥
点赞 回复
发布于 2022-03-22 12:56 来自Android客户端
B为什么错了呢 是因为多个table么
B为什么错了呢 是因为多个table么
点赞 回复
发布于 2022-03-25 22:33
0
是的
是的
点赞 回复
发布于 2022-04-15 14:08
0
展开1条回复
收起
单选题
数据库
13.
关系完备的系统是指()。
A
仅支持关系数据结构,不支持集合级的操作
B
仅支持关系数据结构和三种关系操作
C
支持关系数据结构和所有关系代数操作
D
支持关系模型的所有特征
正确答案:C
你的答案:未作答
官方解析:
关系完备的系统是指支持关系数据结构和所有关系代数操作的系统。C选项正确地表达了这一概念。

关系完备性是关系型数据库系统的一个重要特征,它要求系统能够支持:
1. 关系数据结构的存储和管理
2. 完整的关系代数运算,包括选择、投影、并集、差集、笛卡尔积等基本运算

分析其他选项:
A错误:仅支持关系数据结构是不够的,系统还必须支持集合级操作才能称为关系完备
B错误:只支持三种关系操作过于局限,无法满足关系完备性的要求
D错误:此选项范围过大,关系模型的所有特征包含了比关系完备性更多的内容,如完整性约束等

总的来说,关系完备性强调的是系统对关系数据结构的支持以及对关系代数操作的全面支持,这正是C选项所表达的含义。这种完备性保证了系统能够执行各种复杂的数据查询和处理操作。
知识点:数据库
题友讨论(3)
A是表式系统
B是最小关系系统
C是关系完备系统
D是全关系系统
A是表式系统
B是最小关系系统
C是关系完备系统
D是全关系系统
28 回复
发布于 2020-09-05 19:15
关系完备的系统支持:关系数据结构、所有的关系代数操作
参考百度百科:http://baike.baidu.com/item/%E5%85%B3%E7%B3%BB%E7%B3%BB%E7%BB%9F
关系完备的系统支持:关系数据结构、所有的关系代数操作
5 回复
发布于 2017-05-07 10:55
点赞 回复
发布于 08-11 17:41 四川
0
收起
单选题
数据库
14.

E-R图中,实体用( )符号表示。

A
椭圆
B
矩形
C
菱形
D
三角形
正确答案:B
你的答案:未作答
官方解析:
E-R图是实体关系图(Entity-Relationship Diagram),用于数据库概念设计,其中使用矩形(方框)来表示实体。这是E-R图的基本符号规范之一。

分析其他选项:

A错误:椭圆形在E-R图中用来表示实体的属性(Attribute)。

B正确:矩形用来表示实体(Entity),这是E-R模型的标准符号。实体是现实世界中可区别于其他对象的事物,在E-R图中用矩形表示最为直观。

C错误:菱形在E-R图中用来表示实体之间的关系(Relationship)。

D错误:三角形不是E-R图的标准符号,在E-R图中没有使用三角形来表示任何概念。

补充说明:在E-R图中,不同的图形符号代表不同的含义:
- 矩形表示实体
- 椭圆表示属性
- 菱形表示关系
这些符号的使用是数据库设计中的国际通用标准。
知识点:数据库
题友讨论(5)
在ER图中有如下四个成分: 矩形框:表示实体,在框中记入实体名。 菱形框:表示联系,在框中记***系名。 椭圆形框:表示实体或联系的属性,将属性名记入框中。对于主属性名,则在其名称下划一下划线。 连线:实体与属性之间;实体与联系之间;联系与属性之间用直线相连,并在直线上标注联系的类型。(对于一对一联系,要在两个实体连线方向各写1; 对于一对多联系,要在一的一方写1,多的一方写N;对于多对多关系,则要在两个实体连线方向各写N,M。)
在ER图中有如下四个成分: 矩形框:表示实体,在框中记入实体名。 菱形框:表示联系,在框中记***系名。 椭圆形框:表示实体或联系的属性,将属性名记入框中。对于主属性名,则在其名称下划一下划线。 连线:实体与属性之间;实体与联系之间;联系与属性之间用直线相连,并在直线上标注联系的类型。(对于一对一联系,要在两个实体连线方向各写1; 对于一对多联系,要在一的一方写1,多的一方写N;对于多对多关系,则要在两个实体连线方向各写N,M。)
1 回复
发布于 2019-03-13 08:09
矩阵表示实体 菱形表示联系
矩阵表示实体 菱形表示联系
1 回复
发布于 2019-06-14 09:18
在ER图中有如下四个成分:
矩形框:表示实体,在框中记入实体名。
菱形框:表示联系,在框中记***系名。
椭圆形框:表示实体或联系的属性,将属性名记入框中。对于主属性名,则在其名称下划一下划线。
连线:实体与属性之间;实体与联系之间;联系与属性之间用直线相连,并在直线上标注联系的类型。(对于一对一联系,要在两个实体连线方向各写1; 对于一对多联系,要在一的一方写1,多的一方写N;对于多对多关系,则要在两个实体连线方向各写N,M。)
在ER图中有如下四个成分:
矩形框:表示实体,在框中记入实体名。
菱形框:表示联系,在框中记***系名。
椭圆形框:表示实体或联系的属性,将属性名记入框中。对于主属性名,则在其名称下划一下划线。
连线:实体与属性之间;实体与联系之间;联系与属性之间用直线相连,并在直线上标注联系的类型。(对于一对一联系,要在两个实体连线方向各写1; 对于一对多联系,要在一的一方写1,多的一方写N;对于多对多关系,则要在两个实体连线方向各写N,M。)
11 回复
发布于 2017-07-31 17:01
答案:B

(摘自百度百科)补充:
例图:
E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。
    在ER图中有如下四个成分:
    
        矩形框:表示实体,在框中记入实体名。
        菱形框:表示联系,在框中记***系名。
        椭圆形框:表示实体或联系属性,将属性名记入框中。对于主属性名,则在其名称下划一下划线。
        连线:实体与属性之间、实体与联系之间;联系与属性之间用直线相连,并在直线上标注联系的类型。(对于一对一联系,要在两个实体连线方向各写1; 对于一对多联系,要在一的一方写1,多的一方写N;对于多对多关系,则要在两个实体连线方向各写N,M。)
答案:B

(摘自百度百科)补充:
例图:
E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。
    在ER图中有如下四个成分:
    
        矩形框:表示实体,在框中记入实体名。
        菱形框:表示联系,在框中记***系名。
        椭圆形框:表示实体或联系属性,将属性名记入框中。对于主属性名,则在其名称下划一下划线。
        连线:实体与属性之间、实体与联系之间;联系与属性之间用直线相连,并在直线上标注联系的类型。(对于一对一联系,要在两个实体连线方向各写1; 对于一对多联系,要在一的一方写1,多的一方写N;对于多对多关系,则要在两个实体连线方向各写N,M。)
3 回复
发布于 2022-02-08 13:00
三角形表示什么?大佬们
三角形表示什么?大佬们
点赞 回复
发布于 2023-04-05 16:35 福建
收起
单选题
SQL
数据库
15.
下列选项中关于数据库事务的特性描述正确的是()
A

事务允许继续分割

B

多个事务在执行事务前后对同一个数据读取的结果是不同的

C

一个事务对数据库中数据的改变是暂时的

D

并发访问数据库时,各并发事务之间数据库是独立的

正确答案:D
你的答案:未作答
官方解析:

此题考查数据库事务的原子性、一致性、隔离性和持久性。A选项,事务是最小的执行单位,不允许分割;B选项,执行事务前后,数据保持一致,对同一数据读取的结果相同;C选项,一个事务被提交后对数据库中数据的改变是持久的。

知识点:数据库、SQL、SQL+MySQL
题友讨论(10)
一个事务是一个完整的业务逻辑单元,不可再分。A 错误
事务隔离性存在隔离级别。理论存在4个级别。读未提交,读已提交。可重复读。序列化(串行化)。
读未提交:会导致脏读、不可重复读取、幻读问题。脏读(即一个事务读取了另一个事务未提交的数据)。不可重复读(一个事务还未提交。读取了另一个事务使用update和delete语句后。提交的数据。产生了不同的结果集,这种现象称为。不可以重复读取。)。幻读(同一个查询还未提交。读取了另一个事务使用insert语句后。且提交后。产生了不同的结果集。这种现象称为。幻读)。
读已提交:会导致 不可重复读和幻读问题。解决了脏读。
可重复读取:解决了上述,三个问题不加锁。msyql innodb(默认第三种隔离级别)
序列化:也解决了上述,三个问题。但是使用了锁的方式。
所以B错误
一旦事务提交。就不可以回滚。所以c 错误。
隔离级别的存在。就是为了保证。在当前事务操作的时候数据库中的数据,数据一致的问题。D对。
个人浅见。若有不当之处。请见谅。

一个事务是一个完整的业务逻辑单元,不可再分。A 错误
事务隔离性存在隔离级别。理论存在4个级别。读未提交,读已提交。可重复读。序列化(串行化)。
读未提交:会导致脏读、不可重复读取、幻读问题。脏读(即一个事务读取了另一个事务未提交的数据)。不可重复读(一个事务还未提交。读取了另一个事务使用update和delete语句后。提交的数据。产生了不同的结果集,这种现象称为。不可以重复读取。)。幻读(同一个查询还未提交。读取了另一个事务使用insert语句后。且提交后。产生了不同的结果集。这种现象称为。幻读)。
读已提交:会导致 不可重复读和幻读问题。解决了脏读。
可重复读取:解决了上述,三个问题不加锁。msyql innodb(默认第三种隔离级别)
序列化:也解决了上述,三个问题。但是使用了锁的方式。
所以B错误
一旦事务提交。就不可以回滚。所以c 错误。
隔离级别的存在。就是为了保证。在当前事务操作的时候数据库中的数据,数据一致的问题。D对。
个人浅见。若有不当之处。请见谅。

46 回复
发布于 2022-01-17 16:13
事务的特性:原子性、一致性、隔离性、持久性。
A:原子性×
B:一致性×
C:持久性×
D:隔离性√
事务的特性:原子性、一致性、隔离性、持久性。
A:原子性×
B:一致性×
C:持久性×
D:隔离性√
29 回复
发布于 2022-03-04 20:17
隔离性: 并发访问数据库时,一个用户的事物不被其他事物所干扰,各并发事务之间数据库是独立的;
隔离性: 并发访问数据库时,一个用户的事物不被其他事物所干扰,各并发事务之间数据库是独立的;
6 回复
发布于 2021-12-15 08:18

事务的特点(ACID):

  • A 原子性:一个事务是不可再分割的整体,要么都执行要么都不执行
  • C 一致性:一个事务可以使数据从一个一致状态切换到另外一个一致的状态
  • I 隔离性:一个事务不受其他事务的干扰,多个事务互相隔离的
  • D 持久性:一个事务一旦提交了,则永久的持久化到本地

事务的特点(ACID):

  • A 原子性:一个事务是不可再分割的整体,要么都执行要么都不执行
  • C 一致性:一个事务可以使数据从一个一致状态切换到另外一个一致的状态
  • I 隔离性:一个事务不受其他事务的干扰,多个事务互相隔离的
  • D 持久性:一个事务一旦提交了,则永久的持久化到本地
2 回复
发布于 2022-04-19 12:52
事务是不可以分割的,要么都执行,要么就都不执行
事务是不可以分割的,要么都执行,要么就都不执行
点赞 回复
发布于 2022-04-27 20:05 来自Android客户端
0
事务提交后将不可回滚
事务提交后将不可回滚
点赞 回复
发布于 2022-04-27 20:06 来自Android客户端
0
原子性、一致性、隔离性、持续性
原子性、一致性、隔离性、持续性
点赞 回复
发布于 2024-11-17 19:58 江苏
ACID考察
ACID考察
点赞 回复
发布于 2023-07-25 14:40 广东
考察事务的ACID特性,即原子性、一致性、隔离性、持续性
考察事务的ACID特性,即原子性、一致性、隔离性、持续性
点赞 回复
发布于 2023-01-02 21:48 四川
一个事务是一个完整的业务逻辑单元,不可再分。 一旦提交事件,不可回滚
一个事务是一个完整的业务逻辑单元,不可再分。 一旦提交事件,不可回滚
点赞 回复
发布于 2022-01-20 23:02 来自Android客户端
收起
单选题
数据库
16.

在sql数据库中,哪个语句能校验整数列 i 的值不小于 1 不大于 10

A
i BETWEEN 1 AND 10
B
i BETWEEN 0 AND 11
C
i IN INTERVAL(0,11)
D
i IN INTERVAL(1,10)
正确答案:A
你的答案:未作答
官方解析:
BETWEEN运算符是SQL中用于判断数值范围的标准语法,格式为"列名 BETWEEN 最小值 AND 最大值",包含最小值和最大值。A选项"i BETWEEN 1 AND 10"正确表达了"i的值不小于1不大于10"这个条件。

分析其他选项:
B错误:i BETWEEN 0 AND 11表示的范围是[0,11],超出了题目要求的[1,10]范围。

C错误:在SQL中没有IN INTERVAL这种语法。INTERVAL通常用于日期时间类型,而不是用于数值范围判断。另外指定的范围[0,11]也不符合题目要求。

D错误:与C选项一样,IN INTERVAL语法本身就是错误的。虽然指定的范围[1,10]符合要求,但语法表达方式不正确。

补充说明:除了BETWEEN AND,还可以用>= AND <=的组合来表达相同的条件,即"i >= 1 AND i <= 10"。但题目给出的选项中,只有A是正确的解法。
知识点:数据库、SQL+MySQL、测试、后端开发、客户端开发、前端开发、人工智能/算法、数据、运维/技术支持
题友讨论(6)

between and 查询数字是包含左右边界,查询日期时不包含右边界;

interval(n,n1,n2)是比较函数,返回比n大的位置

interval也可以用来处理时间

now ()- interval 24 hour 返回前一天

between and 查询数字是包含左右边界,查询日期时不包含右边界;

interval(n,n1,n2)是比较函数,返回比n大的位置

interval也可以用来处理时间

now ()- interval 24 hour 返回前一天

16 回复
发布于 2020-03-06 18:02
interval()函数:(摘自易百教程
interval()函数:(摘自易百教程
8 回复
发布于 2017-02-01 14:46
针对数据库系统不同,between and的界限不同
针对数据库系统不同,between and的界限不同
7 回复
发布于 2017-06-29 14:57
between...and...前后均包含
between...and...前后均包含
1 回复
发布于 2017-08-08 19:01
不同数据库对between,,,and的界限不同
不同数据库对between,,,and的界限不同
点赞 回复
发布于 2018-03-13 16:42
选择A,因为数值为1<= x <= 10
选择A,因为数值为1<= x <= 10
点赞 回复
发布于 2017-01-24 13:59
收起
单选题
Java
17.
一个Java源程序文件中定义几个类和接口,则编译该文件后生成几个以.class为后缀的字节码文件。
A
正确
B
错误
正确答案:A
你的答案:未作答
官方解析:
在Java中,一个源程序文件可以包含多个类和接口。编译该文件后,每个类和接口都会生成一个单独的字节码文件,以.class为后缀。
因此,如果一个Java源程序文件中定义了nn个类和接口,编译后将生成nn.class文件
所以,是正确的:一个Java源程序文件中定义几个类和接口,就会生成几个以.class为后缀的字节码文件
知识点:Java
题友讨论(163)
555 回复
发布于 2018-05-14 18:14
一目了然,谢谢啦
一目了然,谢谢啦
4 回复
发布于 2018-08-31 10:12
0
感谢大佬^O^
感谢大佬^O^
3 回复
发布于 2018-10-07 06:52
0
展开36条回复
    牛逼啊,原来是我没有理解题目意思,这个题目是说一个Java源程序中有n个类和接口,就会生成n个以.class为后缀名的文件,但是它忽略了在类和接口里面还可以定义内部类和匿名内部类,这个时候就不仅仅是n个了,还需要加上定义了多个内部类和匿名内部类。
    比如说在一个Java源程序中定义了1个接口,1个类,而在这个接口里面定义了一个内部类,在这个类中定义了一个匿名内部类,这样就是不是2个class文件,而是4个class文件。
    牛逼啊,原来是我没有理解题目意思,这个题目是说一个Java源程序中有n个类和接口,就会生成n个以.class为后缀名的文件,但是它忽略了在类和接口里面还可以定义内部类和匿名内部类,这个时候就不仅仅是n个了,还需要加上定义了多个内部类和匿名内部类。
    比如说在一个Java源程序中定义了1个接口,1个类,而在这个接口里面定义了一个内部类,在这个类中定义了一个匿名内部类,这样就是不是2个class文件,而是4个class文件。
110 回复
发布于 2022-04-17 12:04
是的 我也理解半天才想到这里😂 如果说定义是用class和interface , 那么匿名内部类就不叫做定义🤣
是的 我也理解半天才想到这里😂 如果说定义是用class和interface , 那么匿名内部类就不叫做定义🤣
5 回复
发布于 2022-04-30 05:40
0
感谢感谢
感谢感谢
点赞 回复
发布于 2022-06-30 21:13
0
展开11条回复
一个.java文件中定义多个类:
注意一下几点:
(1) public权限类只能有一个(也可以一个都没有,但最多只有一个);
(2)这个.java文件名只能是public 权限的类的类名;
(3)倘若这个文件中没有public 类,则它的.java文件的名字是随便的一个类名;
(4)当用javac命令生成编译这个.java 文件的时候,则会针对每一个类生成一个.class文件;

一个.java文件中定义多个类:
注意一下几点:
(1) public权限类只能有一个(也可以一个都没有,但最多只有一个);
(2)这个.java文件名只能是public 权限的类的类名;
(3)倘若这个文件中没有public 类,则它的.java文件的名字是随便的一个类名;
(4)当用javac命令生成编译这个.java 文件的时候,则会针对每一个类生成一个.class文件;

86 回复
发布于 2017-05-22 09:26
那内部类呢
那内部类呢
3 回复
发布于 2017-12-12 23:25
0
注解和枚举呢也是。java
注解和枚举呢也是。java
点赞 回复
发布于 2017-12-30 16:38
0
展开7条回复
如果类中有内部类,会产生类名$内部类名.class,如果有匿名类则会产生 类名$1.class.。所以类编译不一定会产生1个class文件。所以答案应该是B
如果类中有内部类,会产生类名$内部类名.class,如果有匿名类则会产生 类名$1.class.。所以类编译不一定会产生1个class文件。所以答案应该是B
51 回复
发布于 2017-11-23 17:06
就是因为内部类所以可能会产生更多的.ckass文件,这道题是错在这里吗
就是因为内部类所以可能会产生更多的.ckass文件,这道题是错在这里吗
点赞 回复
发布于 2017-12-12 23:27
0
看清楚题目先吧
看清楚题目先吧
1 回复
发布于 2018-01-16 08:24
0
展开7条回复






18 回复
发布于 2018-03-08 18:59
真棒
真棒
点赞 回复
发布于 2018-04-06 08:54
0
个人认为答案应该A
看评论看的我傻乎乎的....难不成定义几个类。匿名内部类就不是类的组成部分了????

1)难不成匿名内部类不是内部类了?逗我呢

Java类由五大部分组成:

  • 成员变量/Field域
  • 方法(method)
  • 构造器
  • 代码块
  • 内部类【包含匿名内部类,那么题目答案应该是  正确 才对 怎么就是错误了?】
借点赞最多的一张图片【侵权联系删除,谢谢】



个人认为答案应该A
看评论看的我傻乎乎的....难不成定义几个类。匿名内部类就不是类的组成部分了????

1)难不成匿名内部类不是内部类了?逗我呢

Java类由五大部分组成:

  • 成员变量/Field域
  • 方法(method)
  • 构造器
  • 代码块
  • 内部类【包含匿名内部类,那么题目答案应该是  正确 才对 怎么就是错误了?】
借点赞最多的一张图片【侵权联系删除,谢谢】



9 回复
发布于 2022-05-19 21:13
我感觉匿名内部类其实本质上是一个实现了具体功能的父类或者父接口的子类对象,并不是一个类的显示声明,但是在编译的时候依然会为这个子类对象生成子类的.class文件
我感觉匿名内部类其实本质上是一个实现了具体功能的父类或者父接口的子类对象,并不是一个类的显示声明,但是在编译的时候依然会为这个子类对象生成子类的.class文件
点赞 回复
发布于 2022-07-23 11:31
0
和你一个想法,题目表述不明,不知道出题者意图究竟是什么🤣
和你一个想法,题目表述不明,不知道出题者意图究竟是什么🤣
点赞 回复
发布于 2022-08-06 19:34
0
展开2条回复
接口是怎么回事
接口是怎么回事
9 回复
发布于 2017-05-24 23:10
接口也是生成其对应的class文件的
接口也是生成其对应的class文件的
点赞 回复
发布于 2017-09-04 21:15
0
+1
+1
点赞 回复
发布于 2017-10-16 20:20
0
内部类编译后也会生成.class的字节码文件么?
内部类编译后也会生成.class的字节码文件么?
8 回复
发布于 2017-05-12 10:41
对,而且命名是按照 外部类名称$内部类名称
对,而且命名是按照 外部类名称$内部类名称
4 回复
发布于 2017-05-12 16:33
0
多谢解答
多谢解答
点赞 回复
发布于 2022-03-28 21:46 来自Android客户端
0
后缀名为.java的文件编译后就会产生.class后缀的字节码文件
后缀名为.java的文件编译后就会产生.class后缀的字节码文件
7 回复
发布于 2017-05-08 22:51
这道题是答案错了吗?有没有人知道
这道题是答案错了吗?有没有人知道
6 回复
发布于 2022-04-19 23:07 来自Android客户端
我也想知道。。高赞回答得出的结论不是正确吗
我也想知道。。高赞回答得出的结论不是正确吗
1 回复
发布于 2022-04-22 18:35
0
答案没错,匿名内部类不是定义的,所以产生的.class就多了
答案没错,匿名内部类不是定义的,所以产生的.class就多了
点赞 回复
发布于 2022-04-30 05:37
0
展开4条回复
收起
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 8
单选题
SQL
数据库
18.

已知某期刊信息库中有作家信息表author(作者编号aid,作者姓名aname,作者笔名ausername,作者邮箱aemail,备注remarks),稿件表manuscript(稿件编号mid,标题mtitle,作者编号aid,交稿时间mtime)现需要设置外键作者编号,下列语句正确的是()

A

ALTER TABLE manuscript

ADD CONSTRAINT FK_aid

FOREIGN KEY (aid) REFERENCES author (aid)

B

ALTER TABLE manuscript

ADD CONSTRAINT FK_aid

FOREIGN KEY (manuscript.aid) REFERENCES author (aid)

C

ALTER TABLE manuscript

ADD FOREIGN KEY (manuscript.aid)

REFERENCES author (aid)

D

ALTER TABLE manuscript

ADD FOREIGN KEY (aid)

REFERENCES author (aid)

正确答案:B
你的答案:未作答
官方解析:

由于外键在两表的名称一致,需要指定aid的来源表,AD选项未指定;CD选项还缺少设置外键的关键字,因此错误。

知识点:数据库、SQL
题友讨论(27)
67 回复
发布于 2022-02-08 13:48
alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);
alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);
26 回复
发布于 2021-12-17 10:19
又是一道错误的题,你试试在mysql执行b选项会不会出错。
添加外键语句
ALTER TABLE 从表名 ADD [CONSTRAINT 约束名] FOREIGN KEY (从表的字段) REFERENCES 主表名(被引用 字段) [on update xx][on delete xx]; 
创建两张表dept,emp,dept作为主表,emp作为从表
create table dept
( #主表  d_id int primary key, #部门编号  d_name varchar(50) #部门名称 );
create table emp
( #从表  e_id int primary key, #员工编号  e_name varchar(5), #员工姓名  d_id int #员工所在的部门 );
虽然主表的部门编号和从表的部门编号一致,但是添加成功 且 无需使用constraint 对外键进行定义,答案解析错误
alter table emp add foreign key(d_id) references dept(d_id)

把外键删除,试着用b选项的方式添加外键报错
alter table emp add constraint fk_id foreign key(emp.d_id) references dept(d_id)


又是一道错误的题,你试试在mysql执行b选项会不会出错。
添加外键语句
ALTER TABLE 从表名 ADD [CONSTRAINT 约束名] FOREIGN KEY (从表的字段) REFERENCES 主表名(被引用 字段) [on update xx][on delete xx]; 
创建两张表dept,emp,dept作为主表,emp作为从表
create table dept
( #主表  d_id int primary key, #部门编号  d_name varchar(50) #部门名称 );
create table emp
( #从表  e_id int primary key, #员工编号  e_name varchar(5), #员工姓名  d_id int #员工所在的部门 );
虽然主表的部门编号和从表的部门编号一致,但是添加成功 且 无需使用constraint 对外键进行定义,答案解析错误
alter table emp add foreign key(d_id) references dept(d_id)

把外键删除,试着用b选项的方式添加外键报错
alter table emp add constraint fk_id foreign key(emp.d_id) references dept(d_id)


19 回复
发布于 2022-05-27 17:05
对,题错了,我们老师讲的时候也是没有"."的
对,题错了,我们老师讲的时候也是没有"."的
点赞 回复
发布于 2022-08-24 13:03 河南
0
添加主键约束:alter table 表名 add constraint 主键 (形如:PK_表名) primary key 表名(主键字段);
添加外键约束:alter table 从表 add constraint 外键(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
添加主键约束:alter table 表名 add constraint 主键 (形如:PK_表名) primary key 表名(主键字段);
添加外键约束:alter table 从表 add constraint 外键(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
5 回复
发布于 2022-04-14 17:09


看到题解说是因为两张表有相同字段,需要指出来源表,所以又重新测试了一下






看到题解说是因为两张表有相同字段,需要指出来源表,所以又重新测试了一下




2 回复
发布于 2022-08-15 14:31
感觉B和D都是对的呀!
感觉B和D都是对的呀!
2 回复
发布于 2022-03-16 16:30
好像mysql8 需要要有 constrint 命名字段
好像mysql8 需要要有 constrint 命名字段
点赞 回复
发布于 2022-04-13 17:22
0
alter table 表名 add constraint 外键名字 foreign key (本表的外键列名) 主表名(主表主键名)
alter table 表名 add constraint 外键名字 foreign key (本表的外键列名) 主表名(主表主键名)
1 回复
发布于 2024-02-27 01:48 广东 来自Android客户端
FK_和PK_是什么意思呢?感谢!
FK_和PK_是什么意思呢?感谢!
1 回复
发布于 2022-04-19 19:29 来自Android客户端
外键和主键的英文缩写,这是默认的命名方式
外键和主键的英文缩写,这是默认的命名方式
1 回复
发布于 2022-07-19 23:00 来自iOS客户端
0
大神们,A为什么不行

大神们,A为什么不行

1 回复
发布于 2022-04-19 00:02
两个表都有aid,属性,a选项没有区分aid是来自哪一个表
两个表都有aid,属性,a选项没有区分aid是来自哪一个表
点赞 回复
发布于 2023-01-18 10:49 湖南 来自Android客户端
0
这里已经给了表名 alter 所以不需要。
这里已经给了表名 alter 所以不需要。
点赞 回复
发布于 2024-10-05 18:39 江苏
0
为什么C错了啊

为什么C错了啊

点赞 回复
发布于 2024-06-16 22:37 四川
收起
  • 1
  • 2
单选题
数据库
19.
视图建立后,在数据字典中存放的是()。
A
查询语句
B
视图的内容
C
视图的定义
D
产生视图的表的定义
正确答案:C
你的答案:未作答
官方解析:
视图是一个虚拟表,它实际上并不存储数据,而只是存储视图的定义(即创建视图的SELECT语句)在数据字典中。当用户查询视图时,数据库管理系统会根据存储的视图定义动态获取数据。因此C选项"视图的定义"是正确的。

分析其他选项:

A错误:查询语句是创建视图的组成部分,但在数据字典中存储的是完整的视图定义,不仅仅是查询语句。

B错误:视图并不存储实际的数据内容,它只是一个查询的逻辑定义。视图的内容是在每次查询时动态生成的。

D错误:数据字典中确实会存储基表的定义,但这与视图是独立的。视图建立后,数据字典中存储的是视图本身的定义,而不是产生视图的原表的定义。

所以视图实际上是一个预定义的SQL查询,其定义被存储在数据字典中。这种机制使得视图能够提供数据的逻辑独立性,同时不占用实际的存储空间来存储数据内容。
知识点:数据库
题友讨论(4)

Create view 并不执行select查询,只是把视图的定义永久存入了数据字典,只是在查询视图时才会按视图的定义从基本表中将数据查出,而一旦基本表的数据发生变化,从视图中查询出的数据也会随之改变。

Create view 并不执行select查询,只是把视图的定义永久存入了数据字典,只是在查询视图时才会按视图的定义从基本表中将数据查出,而一旦基本表的数据发生变化,从视图中查询出的数据也会随之改变。

13 回复
发布于 2020-06-11 17:34
视图建立后,在数据字典中存放的是 视图的定义
视图建立后,在数据字典中存放的是 视图的定义
10 回复
发布于 2017-08-04 10:42
视图建立后,在数据字典中存放的是 视图的定义
视图建立后,在数据字典中存放的是 视图的定义
2 回复
发布于 2019-03-19 09:03
视图建立之后,在数据字典存储的是视图的定义
视图建立之后,在数据字典存储的是视图的定义
点赞 回复
发布于 2024-02-23 21:19 广东
收起
单选题
数据库
20.
在查询优化策略中,首先应该让投影操作尽可能早的做,然后再尽可能早的进行选择运算。(         )
A
正确
B
错误
正确答案:B
你的答案:未作答
官方解析:
在关系代数查询优化中,应该首先执行限制条件最严格的选择运算,然后再执行投影运算。这样可以最大程度地减少中间结果集的大小,提高查询效率。

原因如下:
1. 选择运算会过滤掉不满足条件的元组,能够大幅减少参与后续运算的数据量。而投影运算只是减少属性列,对元组数量没有影响。

2. 如果先执行投影,可能会丢失执行选择运算所需的属性,导致后续无法正确执行选择运算。

3. 选择运算具有可交换性,多个选择运算的顺序可以调整。应该把选择因子(过滤掉的记录比例)最大的选择运算放在最前面执行。

4. 投影和选择运算之间也具有可交换性,但前提是选择运算中用到的属性必须包含在投影结果中。

所以A选项的说法是错误的,正确的查询优化策略应该是让选择运算尽可能早地执行,然后再执行投影运算,而不是反过来。这样才能最大限度地提升查询性能。
知识点:数据库
题友讨论(4)
这是关于查询树的启发式优化规则的代数优化,对关系代数表达式的查询树进行优化,典型的启发式规则有


1.选择运算尽可能早做,在优化策略中这是最重要,最基本的一条,它常常可以使执行节约几个数量级,因为选择运算一般使计算的中间结果大大变小
2
.把投影运算和选择运算同时进行。如果有若干的投影和选择运算并且他们都对同一个关系进行操纵的话,就可以在扫描此关系的同时完成所有的这些运算以避免重复扫描关系。
3.把投影同其前或其后的双目运算结合起来,没有必要为了去掉某些字段而扫描一遍关系
4.把某些选择同在他前面要执行的笛卡儿积结合成一个连接运算,连接特别是等值连接运算要比同样关系上的笛卡儿积省很多时间
5.找出公共子表达式
这是关于查询树的启发式优化规则的代数优化,对关系代数表达式的查询树进行优化,典型的启发式规则有


1.选择运算尽可能早做,在优化策略中这是最重要,最基本的一条,它常常可以使执行节约几个数量级,因为选择运算一般使计算的中间结果大大变小
2
.把投影运算和选择运算同时进行。如果有若干的投影和选择运算并且他们都对同一个关系进行操纵的话,就可以在扫描此关系的同时完成所有的这些运算以避免重复扫描关系。
3.把投影同其前或其后的双目运算结合起来,没有必要为了去掉某些字段而扫描一遍关系
4.把某些选择同在他前面要执行的笛卡儿积结合成一个连接运算,连接特别是等值连接运算要比同样关系上的笛卡儿积省很多时间
5.找出公共子表达式
47 回复
发布于 2017-09-02 19:53
先选择运算,
  • 1.比较运算:>,>=,<,<=,=,<>(或!=);
  • 2.范围查询:BETWEEN...AND
  • 3.集合查询:IN;
  • 4.空值查询:IS NULL;
  • 5.字符串匹配查询:LIKE;
  • 6.逻辑查询:AND,OR,NOT。
然后再进行投影查询
先选择运算,
  • 1.比较运算:>,>=,<,<=,=,<>(或!=);
  • 2.范围查询:BETWEEN...AND
  • 3.集合查询:IN;
  • 4.空值查询:IS NULL;
  • 5.字符串匹配查询:LIKE;
  • 6.逻辑查询:AND,OR,NOT。
然后再进行投影查询
8 回复
发布于 2020-04-23 09:39
如果有投影和选择,应该让两者同时进行
如果有投影和选择,应该让两者同时进行
点赞 回复
发布于 2024-03-22 23:27 安徽
这是关于查询树的启发式优化规则的代数优化,对关系代数表达式的查询树进行优化,典型的启发式规则有


1.选择运算尽可能早做,在优化策略中这是最重要,最基本的一条,它常常可以使执行节约几个数量级,因为选择运算一般使计算的中间结果大大变小
2
.把投影运算和选择运算同时进行。如果有若干的投影和选择运算并且他们都对同一个关系进行操纵的话,就可以在扫描此关系的同时完成所有的这些运算以避免重复扫描关系。
3.把投影同其前或其后的双目运算结合起来,没有必要为了去掉某些字段而扫描一遍关系
4.把某些选择同在他前面要执行的笛卡儿积结合成一个连接运算,连接特别是等值连接运算要比同样关系上的笛卡儿积省很多时间
5.找出公共子表达式
这是关于查询树的启发式优化规则的代数优化,对关系代数表达式的查询树进行优化,典型的启发式规则有


1.选择运算尽可能早做,在优化策略中这是最重要,最基本的一条,它常常可以使执行节约几个数量级,因为选择运算一般使计算的中间结果大大变小
2
.把投影运算和选择运算同时进行。如果有若干的投影和选择运算并且他们都对同一个关系进行操纵的话,就可以在扫描此关系的同时完成所有的这些运算以避免重复扫描关系。
3.把投影同其前或其后的双目运算结合起来,没有必要为了去掉某些字段而扫描一遍关系
4.把某些选择同在他前面要执行的笛卡儿积结合成一个连接运算,连接特别是等值连接运算要比同样关系上的笛卡儿积省很多时间
5.找出公共子表达式
点赞 回复
发布于 2021-10-21 18:28 来自Android客户端
收起
单选题
Java
21.
下面关于 Kotlin 的说法错误的是()
A
Kotlin 中的 println() 函数调用了 System.out.println() 函数
B
Kotlin 中声明变量,可以使用 var 或 val 关键字
C
Kotlin 中声明变量必须指定变量的类型
D
Kotlin 中,val 变量赋值后,无法更改使用 val 关键字声明的变量
正确答案:C
你的答案:未作答
官方解析:
Kotlin 中声明变量不必指定变量的类型,Kotlin 会隐式指定类型。
知识点:Java
题友讨论(0)
单选题
Java
22.
下面代码的输出是什么?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class Base
{
    private String baseName = "base";
    public Base()
    {
        callName();
    }
 
    public void callName()
    {
        System. out. println(baseName);
    }
 
    static class Sub extends Base
    {
        private String baseName = "sub";
        public void callName()
        {
            System. out. println (baseName) ;
        }
    }
    public static void main(String[] args)
    {
        Base b = new Sub();
    }
}

A
null
B
sub
C
base
正确答案:A
你的答案:未作答
官方解析:
这道题目考察了Java中构造方法调用顺序以及变量初始化的相关知识点。

当执行 new Sub() 时,流程如下:
1. 首先调用父类Base的构造方法
2. 在Base构造方法中调用了callName()方法
3. 由于此时是多态调用,会调用子类Sub重写的callName()方法
4. 此时子类Sub的实例变量baseName还未初始化(还未执行子类的构造方法)
5. 因此子类中访问baseName时得到null

所以最终输出为null,A选项正确。

分析其他选项:
B选项错误:sub是最终赋给子类baseName的值,但在调用时子类构造方法还未执行,变量未初始化。

C选项错误:虽然父类baseName的值是"base",但由于多态,调用的是子类的callName()方法,访问的是子类的baseName变量。

这个题目体现了Java中一个重要的原则:
- 构造方法的调用顺序是先初始化父类再初始化子类
- 成员变量的初始化在构造方法内容执行之前
- 在构造方法中调用可被重写的方法要特别小心,因为此时子类对象可能尚未完全初始化

这也是为什么在构造方法中应该尽量避免调用可被重写的方法。
知识点:Java
题友讨论(433)
1.首先,需要明白类的加载顺序
(1) 父类静态代码块(包括静态初始化块,静态属性,但不包括静态方法)
(2) 子类静态代码块(包括静态初始化块,静态属性,但不包括静态方法 )
(3) 父类非静态代码块( 包括非静态初始化块,非静态属性 )
(4) 父类构造函数
(5) 子类非静态代码块 ( 包括非静态初始化块,非静态属性 )
(6) 子类构造函数
其中:类中静态块按照声明顺序执行,并且(1)和(2)不需要调用new类实例的时候就执行了(意思就是在类加载到方法区的时候执行的)
2.其次,需要理解子类覆盖父类方法的问题,也就是方法重写实现多态问题。
Base b = new Sub();它为多态的一种表现形式,声明是Base,实现是Sub类, 理解为 b 编译时表现为Base类特性,运行时表现为Sub类特性。
当子类覆盖了父类的方法后,意思是父类的方法已经被重写,题中 父类初始化调用的方法为子类实现的方法,子类实现的方法中调用的baseName为子类中的私有属性。
由1.可知,此时只执行到步骤4.,子类非静态代码块和初始化步骤还没有到,子类中的baseName还没有被初始化。所以此时 baseName为空。 所以为null。
1.首先,需要明白类的加载顺序
(1) 父类静态代码块(包括静态初始化块,静态属性,但不包括静态方法)
(2) 子类静态代码块(包括静态初始化块,静态属性,但不包括静态方法 )
(3) 父类非静态代码块( 包括非静态初始化块,非静态属性 )
(4) 父类构造函数
(5) 子类非静态代码块 ( 包括非静态初始化块,非静态属性 )
(6) 子类构造函数
其中:类中静态块按照声明顺序执行,并且(1)和(2)不需要调用new类实例的时候就执行了(意思就是在类加载到方法区的时候执行的)
2.其次,需要理解子类覆盖父类方法的问题,也就是方法重写实现多态问题。
Base b = new Sub();它为多态的一种表现形式,声明是Base,实现是Sub类, 理解为 b 编译时表现为Base类特性,运行时表现为Sub类特性。
当子类覆盖了父类的方法后,意思是父类的方法已经被重写,题中 父类初始化调用的方法为子类实现的方法,子类实现的方法中调用的baseName为子类中的私有属性。
由1.可知,此时只执行到步骤4.,子类非静态代码块和初始化步骤还没有到,子类中的baseName还没有被初始化。所以此时 baseName为空。 所以为null。
904 回复
发布于 2016-10-14 19:53
666
666
2 回复
发布于 2017-06-03 15:42
0
厉害
厉害
点赞 回复
发布于 2017-06-06 22:07
0
展开77条回复
public class Base {
private String baseName = "base";
public Base() {
callName();
}
public void callName() {
System.out.println(baseName);
}
public static void main(String[] args) {
Base b = new Sub();
}
}
class Sub extends Base {
private String baseName = "sub";
public void callName() {
System.out.println(baseName);
}
}
本题与内部类无关系,去掉内部类后代码如上,
执行 Base b = new Sub();时由于多态 b编译时表现为Base类特性,运行时表现为Sub类特性,
Base b = new Sub();不管是哪种状态都会调用Base构造器执行 callName()方法;
执行方法时,由于多台表现为子类特性,所以会先在子类是否有 callName();
而此时子类尚未初始化(执行完父类构造器后才会开始执行子类),
如果有就执行,没有再去父类寻找
如果把父类 callName()改为 callName2(),则会输出base
public class Base {
private String baseName = "base";
public Base() {
callName();
}
public void callName() {
System.out.println(baseName);
}
public static void main(String[] args) {
Base b = new Sub();
}
}
class Sub extends Base {
private String baseName = "sub";
public void callName() {
System.out.println(baseName);
}
}
本题与内部类无关系,去掉内部类后代码如上,
执行 Base b = new Sub();时由于多态 b编译时表现为Base类特性,运行时表现为Sub类特性,
Base b = new Sub();不管是哪种状态都会调用Base构造器执行 callName()方法;
执行方法时,由于多台表现为子类特性,所以会先在子类是否有 callName();
而此时子类尚未初始化(执行完父类构造器后才会开始执行子类),
如果有就执行,没有再去父类寻找
如果把父类 callName()改为 callName2(),则会输出base
152 回复
发布于 2016-03-08 12:01
说的真好听
说的真好听
点赞 回复
发布于 2016-08-08 18:59
0
666这个解释不错,编译时表现为Base类特性,运行时表现为Sub类特性
666这个解释不错,编译时表现为Base类特性,运行时表现为Sub类特性
4 回复
发布于 2016-08-24 11:36
0
展开18条回复
这题考察的是java的初始化顺序,先初始化父类的成员变量,再初始化父类的构造函数,因为父类里面的构造函数里面的方法在子类中已经进行了重写所以会调用子类的这个方法,但是子类成员变量还没初始化,所以其为null
这题考察的是java的初始化顺序,先初始化父类的成员变量,再初始化父类的构造函数,因为父类里面的构造函数里面的方法在子类中已经进行了重写所以会调用子类的这个方法,但是子类成员变量还没初始化,所以其为null
135 回复
发布于 2016-03-05 10:03
public Base() { System.out.println(this); System.out.println(this.baseName); this.callName(); } 接原题,加了两行 这两行输出什么?
public Base() { System.out.println(this); System.out.println(this.baseName); this.callName(); } 接原题,加了两行 这两行输出什么?
点赞 回复
发布于 2020-05-21 16:17
0
Test$Sub@12edcd21 base null
Test$Sub@12edcd21 base null
点赞 回复
发布于 2020-10-23 14:03
0
展开1条回复
A.
new一个子类对象,默认会先调用父类的构造方法来初始化父类的成员变量,执行Base()方法,在Base()方法中执行CallName()方法,而子类已经重写了父类的CallName()方法,所以执行的是子类的CallName()方法,而父类的成员变量还没有被初始化,所以为null

A.
new一个子类对象,默认会先调用父类的构造方法来初始化父类的成员变量,执行Base()方法,在Base()方法中执行CallName()方法,而子类已经重写了父类的CallName()方法,所以执行的是子类的CallName()方法,而父类的成员变量还没有被初始化,所以为null

33 回复
发布于 2015-08-18 16:58
父类的成员变量已经初始化了,是子类的baseName还没初始化 解析:先初始化父类的变量,再调用父类的构造方法,父类构造方法调用CallName(),因为子类重写该方法,所以调用子类的,但子类的变量还没初始化(附上一篇文章:http://blog.sina.com.cn/s/blog_4cc16fc50100bjjp.html#cmt_3447145
父类的成员变量已经初始化了,是子类的baseName还没初始化 解析:先初始化父类的变量,再调用父类的构造方法,父类构造方法调用CallName(),因为子类重写该方法,所以调用子类的,但子类的变量还没初始化(附上一篇文章:http://blog.sina.com.cn/s/blog_4cc16fc50100bjjp.html#cmt_3447145)
12 回复
发布于 2015-09-04 21:09
0
&ldquo;子类已经重写了父类的CallName()方法,所以执行的是子类的CallName()方法&rdquo;这里为什么执行子类的CallName()方法,不太理解。这里不是在构造父类吗,会调用子类的CallName么? 如果是 Base b = new Sub(); b.CallName(); 这样会调用子类的CallName,我能理解。
“子类已经重写了父类的CallName()方法,所以执行的是子类的CallName()方法”这里为什么执行子类的CallName()方法,不太理解。这里不是在构造父类吗,会调用子类的CallName么? 如果是 Base b = new Sub(); b.CallName(); 这样会调用子类的CallName,我能理解。
点赞 回复
发布于 2015-10-08 20:30
0
展开3条回复

从类加载机制和初始化层面来看,过程可以认为如下(大致如此,有交叉): Sub类 1、加载(根据class文件在方法区中建立instanceofKlass对象) 2、验证 3、准备(此时除去final字段,Sub类字段都为初始值) 4、解析 4.1解析父类,即Base(要用类加载器加载父类,可以认为此时父类完成加载) 4.2解析字段,即baseName,根据字段简单名(注意是简单名,不是全名)从下往上递归解析,对于本题解析结果是子类常量池的字段,此时为null。 4.3解析方法,同样根据简单名解析,此时方法为子类覆盖父类的方法。 5、初始化,从顶到底,执行类的<clinit>()方法。此方法为java文件中所有静态代码段或静态赋值语句的总和。很显然,到这一步,父类和子类的baseName都是null。 6、创建对象。因为是new Sub(),所以先在虚拟机中方法区为子类申请空间,在堆中放置子类的instanceofklass对象句柄(这个是JVM中类的实例表示),内存分配成功,执行子类的<init>()函数(<init>()函数是字段赋值语句加上构造函数语句的合体</init>),在子类中的<init>()函数中调用父类的<init>()函数,在父类的函数中调用callName含数,注意callName函数是用invokevirtual语句调用的,invokevirtual语句表示,根据调用对象解析的方法来使用。调用对象是在本地变量表的第0位,用了this表示,这个this指的就是前面说的instanceofklass对象句柄,就是sub对象。所以此时print打印的就是sub对象的callName()方法,既然是sub的callName,自然打印null,因为sub的非静态字段赋值语句是在父类的<init>()方法结束后进行的。</init></init></init></init></clinit>

从类加载机制和初始化层面来看,过程可以认为如下(大致如此,有交叉):
Sub类
1、加载(根据class文件在方法区中建立instanceofKlass对象)
2、验证
3、准备(此时除去final字段,Sub类字段都为初始值)
4、解析
4.1解析父类,即Base(要用类加载器加载父类,可以认为此时父类完成加载)
4.2解析字段,即baseName,根据字段简单名(注意是简单名,不是全名)从下往上递归解析,对于本题解析结果是子类常量池的字段,此时为null。
4.3解析方法,同样根据简单名解析,此时方法为子类覆盖父类的方法。
5、初始化,从顶到底,执行类的<clinit>()方法。此方法为java文件中所有静态代码段或静态赋值语句的总和。很显然,到这一步,父类和子类的baseName都是null。
6、创建对象。因为是new Sub(),所以先在虚拟机中方法区为子类申请空间,在堆中放置子类的instanceofklass对象句柄(这个是JVM中类的实例表示),内存分配成功,执行子类的<init>()函数(<init>()函数是字段赋值语句加上构造函数语句的合体</init>),在子类中的<init>()函数中调用父类的<init>()函数,在父类的函数中调用callName含数,注意callName函数是用invokevirtual语句调用的,invokevirtual语句表示,根据调用对象解析的方法来使用。调用对象是在本地变量表的第0位,用了this表示,这个this指的就是前面说的instanceofklass对象句柄,就是sub对象。所以此时print打印的就是sub对象的callName()方法,既然是sub的callName,自然打印null,因为sub的非静态字段赋值语句是在父类的<init>()方法结束后进行的。</init></init></init></init></clinit>

25 回复
发布于 2019-01-11 23:17
感觉你的答案说到点上了,其他的都是瞎胡说,先分配了内存的,只是没有初始化,不然肯定爆null异常,直接说类初始化顺序的很不以为然
感觉你的答案说到点上了,其他的都是瞎胡说,先分配了内存的,只是没有初始化,不然肯定爆null异常,直接说类初始化顺序的很不以为然
点赞 回复
发布于 2020-02-04 21:43
0
public Base() { System.out.println(this.baseName); this.callName(); } 按你说的this是instanceofklass句柄,输出应该是null,但是输出的是base
public Base() { System.out.println(this.baseName); this.callName(); } 按你说的this是instanceofklass句柄,输出应该是null,但是输出的是base
点赞 回复
发布于 2020-05-21 16:25
0
展开2条回复
运行顺序,父类的构造方法执行的是子类的callName方法,原因是多态
运行顺序,父类的构造方法执行的是子类的callName方法,原因是多态
23 回复
发布于 2019-05-23 10:25
收藏了
收藏了
点赞 回复
发布于 2019-09-07 09:52
0
这个清晰
这个清晰
点赞 回复
发布于 2020-08-20 16:04
0
展开1条回复
 new Sub()先执行父类的构造方法,父类构造方法调用callName()方法,子类对其进重写。执行子类的callName()方法。输出的成员变量也就是子类的成员变量。但是由于子类还没执行构造函数。所以输出null。
 new Sub()先执行父类的构造方法,父类构造方法调用callName()方法,子类对其进重写。执行子类的callName()方法。输出的成员变量也就是子类的成员变量。但是由于子类还没执行构造函数。所以输出null。
22 回复
发布于 2016-02-02 20:27
baseName实际上是子类的。
baseName实际上是子类的。
点赞 回复
发布于 2016-02-02 20:27
0
只有执行类子类的构造方法,成员变量才有值。
只有执行类子类的构造方法,成员变量才有值。
2 回复
发布于 2016-02-02 20:28
0
展开3条回复
首先加载基类:基类成员变量->构造函数->子类成员变量->子类构造函数->
父类调用子类callName()时baseName还没加载 所以为空 可debug调试下 一目了然

首先加载基类:基类成员变量->构造函数->子类成员变量->子类构造函数->
父类调用子类callName()时baseName还没加载 所以为空 可debug调试下 一目了然

15 回复
发布于 2016-01-25 11:43
6666
6666
点赞 回复
发布于 2016-08-21 22:20
0
A.
考察类的加载顺序。
首先加载基类:1->构造函数->子类覆盖->基类成员变量->子类构造函数->子类成员变量
A.
考察类的加载顺序。
首先加载基类:1->构造函数->子类覆盖->基类成员变量->子类构造函数->子类成员变量
12 回复
发布于 2015-08-21 09:25
顺序有点问题吧
顺序有点问题吧
1 回复
发布于 2016-01-06 20:42
0
你这个不对吧
你这个不对吧
点赞 回复
发布于 2016-03-28 10:53
0
展开2条回复
1.首先,需要明白类的加载顺序。 (1) 父类静态代码块(包括静态初始化块,静态属性,但不包括静态方法) (2) 子类静态代码块(包括静态初始化块,静态属性,但不包括静态方法 ) (3) 父类非静态代码块( 包括非静态初始化块,非静态属性 ) (4) 父类构造函数 (5) 子类非静态代码块 ( 包括非静态初始化块,非静态属性 ) (6) 子类构造函数 其中:类中静态块按照声明顺序执行,并且(1)和(2)不需要调用new类实例的时候就执行了(意思就是在类加载到方法区的时候执行的) 2.其次,需要理解子类覆盖父类方法的问题,也就是方法重写实现多态问题。 Base b = new Sub();它为多态的一种表现形式,声明是Base,实现是Sub类, 理解为 b 编译时表现为Base类特性,运行时表现为Sub类特性。 当子类覆盖了父类的方法后,意思是父类的方法已经被重写,题中 父类初始化调用的方法为子类实现的方法,子类实现的方法中调用的baseName为子类中的私有属性。 由1.可知,此时只执行到步骤4.,子类非静态代码块和初始化步骤还没有到,子类中的baseName还没有被初始化。所以此时 baseName为空。 所以为null。
1.首先,需要明白类的加载顺序。 (1) 父类静态代码块(包括静态初始化块,静态属性,但不包括静态方法) (2) 子类静态代码块(包括静态初始化块,静态属性,但不包括静态方法 ) (3) 父类非静态代码块( 包括非静态初始化块,非静态属性 ) (4) 父类构造函数 (5) 子类非静态代码块 ( 包括非静态初始化块,非静态属性 ) (6) 子类构造函数 其中:类中静态块按照声明顺序执行,并且(1)和(2)不需要调用new类实例的时候就执行了(意思就是在类加载到方法区的时候执行的) 2.其次,需要理解子类覆盖父类方法的问题,也就是方法重写实现多态问题。 Base b = new Sub();它为多态的一种表现形式,声明是Base,实现是Sub类, 理解为 b 编译时表现为Base类特性,运行时表现为Sub类特性。 当子类覆盖了父类的方法后,意思是父类的方法已经被重写,题中 父类初始化调用的方法为子类实现的方法,子类实现的方法中调用的baseName为子类中的私有属性。 由1.可知,此时只执行到步骤4.,子类非静态代码块和初始化步骤还没有到,子类中的baseName还没有被初始化。所以此时 baseName为空。 所以为null。
11 回复
发布于 2019-04-02 22:40
牛逼
牛逼
点赞 回复
发布于 2023-11-09 20:41 陕西
0
收起
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 21
单选题
数据库
23.
下图给定的关系R,它满足(   )。

A
1NF
B
2NF
C
3NF
D
BCNF
正确答案:B
你的答案:未作答
官方解析:
根据给定关系R的结构和依赖关系,这是一个典型的2NF(第二范式)的例子。

让我们逐层分析:

1. 该关系模式中:
- 候选键为(A,B)
- 存在依赖关系 A→C, B→D

2. 该关系已经满足1NF,因为所有属性都是原子的。

3. 该关系确实满足2NF的要求:
- 首先满足1NF
- 所有非主属性(C和D)都完全依赖于候选键(A,B),而不存在部分依赖

4. 但不满足3NF和BCNF:
- C只依赖于A,D只依赖于B,这说明存在传递依赖
- 存在非主属性对候选键的部分依赖(A→C和B→D)

分析其他选项:
A错误:虽然该关系确实满足1NF,但题目要求选择最高的范式级别,该关系达到了2NF。

C错误:由于存在传递依赖,不满足3NF的要求。

D错误:不满足BCNF的要求,因为存在决定因素不是候选键的函数依赖。

因此B选项(2NF)是正确答案,因为该关系正好满足2NF的所有要求,但未能达到更高的范式级别。
知识点:数据库
题友讨论(24)
nomico271 的答案错误,
正确答案看这里
nomico271 的答案错误,
正确答案看这里
15 回复
发布于 2017-11-25 11:19
这题不满足3NF吧?应该选2NF吧?材料名可以唯一确定生产厂,所以存在传递依赖。谁来给我解释一下?谢谢
这题不满足3NF吧?应该选2NF吧?材料名可以唯一确定生产厂,所以存在传递依赖。谁来给我解释一下?谢谢
13 回复
发布于 2018-05-31 10:05
看下我发表的是不是能解答你的疑惑,如果写的不对还请帮忙指出下哈
看下我发表的是不是能解答你的疑惑,如果写的不对还请帮忙指出下哈
点赞 回复
发布于 2018-07-20 15:34
0
这个题撑死3NF但是确实答案错了应该是2NF 存在对主属性的传递依赖
这个题撑死3NF但是确实答案错了应该是2NF 存在对主属性的传递依赖
2 回复
发布于 2018-08-25 16:30
0
展开5条回复
BCNF是函数依赖的每个决定因素中都包含码,其实这种题很扯,没给出函数依赖集,只能自己判断了,首先确定材料号是主码,其他两个都有它确定,没有其他函数依赖的话,就是BCNF
BCNF是函数依赖的每个决定因素中都包含码,其实这种题很扯,没给出函数依赖集,只能自己判断了,首先确定材料号是主码,其他两个都有它确定,没有其他函数依赖的话,就是BCNF
8 回复
发布于 2020-04-04 10:55 来自Android客户端
首先,这道题的主码只有材料号,给定材料号可以得到其他两个,为什么材料名不是主码,因为给你型材你能得到材料号到底是多少吗?
而厂家可以由材料号得到,也可以由材料名得到,给定线材或者型材一定得到武汉,给定板材一定可以得到广东,所以存在材料号---材料名--厂家这个传递依赖。不满足3NF,主码只有一个属性,不存在部分依赖,选2NF。
首先,这道题的主码只有材料号,给定材料号可以得到其他两个,为什么材料名不是主码,因为给你型材你能得到材料号到底是多少吗?
而厂家可以由材料号得到,也可以由材料名得到,给定线材或者型材一定得到武汉,给定板材一定可以得到广东,所以存在材料号---材料名--厂家这个传递依赖。不满足3NF,主码只有一个属性,不存在部分依赖,选2NF。
7 回复
发布于 2018-08-30 16:03
第一范式( 1NF ):在第一范式( 1NF )中表的每一行只包含一个实例的信息。简而言之,第一范式就是无重复的列。
第二范式( 2NF ):首先满足1NF,再要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主关键字或主键、主码。
第三范式( 3NF ):首先满足2NF,再要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。
第一范式( 1NF ):在第一范式( 1NF )中表的每一行只包含一个实例的信息。简而言之,第一范式就是无重复的列。
第二范式( 2NF ):首先满足1NF,再要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主关键字或主键、主码。
第三范式( 3NF ):首先满足2NF,再要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。
6 回复
发布于 2017-07-30 09:11
选D ,BCNF 。没有其他函数依赖的话,就是BCNF
选D ,BCNF 。没有其他函数依赖的话,就是BCNF
3 回复
发布于 2021-05-12 15:33
支持
支持
点赞 回复
发布于 2024-08-30 07:44 山东 来自Android客户端
0
1NF的定义为:符合1NF的关系中的每个属性都不可再分
2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖
3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖
BCNF:在 3NF 的基础上消除主属性对于码的部分与传递函数依赖
1NF的定义为:符合1NF的关系中的每个属性都不可再分
2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖
3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖
BCNF:在 3NF 的基础上消除主属性对于码的部分与传递函数依赖
2 回复
发布于 2020-04-21 13:06
把里面的几项改成,  学号, 姓名, 家乡 ,BCNF 我觉得ok, 名可以一样, 产地也可以一样, 唯一主键是编号
把里面的几项改成,  学号, 姓名, 家乡 ,BCNF 我觉得ok, 名可以一样, 产地也可以一样, 唯一主键是编号
2 回复
发布于 2020-03-07 16:18
BCNF实际上是在第三范式的基础上,进一步消除了主属性的传递依赖
BCNF实际上是在第三范式的基础上,进一步消除了主属性的传递依赖
2 回复
发布于 2018-09-04 19:58
这里说一下个人理解……。
因为是一个列不可划分的二维表,所以是 1NF
满足2NF,要先写出它的码。这里我认为有两个码,一个是材料号,一个是材料名。都可以由自己推出其他全部的字段。每个码都是单独一个字段,所以不存在非主属性对码的部分函数依赖。
满足3NF,即满足非主属性对主属性的传递函数依赖。也就是说存在一个非主属性y, 码x能够推出y,y能够推出另一个非主属性z。但是这里只有一个非主属性,所以不成立。所以它是3NF
对于BCNF,主要是针对多个属性组成的码,定义是:x->y 并且y不属于x,x中必含有候选码。假设有x,y,z组成的候选码,有x->y 满足上面的条件,但是x不包含候选码。(因为已经满足了3NF,所以不必考虑非主属性的影响。)这道题,两个候选码都是单属性,因此也不存在这种问题。
因此是BCNF
这里说一下个人理解……。
因为是一个列不可划分的二维表,所以是 1NF
满足2NF,要先写出它的码。这里我认为有两个码,一个是材料号,一个是材料名。都可以由自己推出其他全部的字段。每个码都是单独一个字段,所以不存在非主属性对码的部分函数依赖。
满足3NF,即满足非主属性对主属性的传递函数依赖。也就是说存在一个非主属性y, 码x能够推出y,y能够推出另一个非主属性z。但是这里只有一个非主属性,所以不成立。所以它是3NF
对于BCNF,主要是针对多个属性组成的码,定义是:x->y 并且y不属于x,x中必含有候选码。假设有x,y,z组成的候选码,有x->y 满足上面的条件,但是x不包含候选码。(因为已经满足了3NF,所以不必考虑非主属性的影响。)这道题,两个候选码都是单属性,因此也不存在这种问题。
因此是BCNF
2 回复
发布于 2018-07-20 15:32
答案错了,别套了,之前相同的答案是2NF这个最高是3NF, BCNF是没有非主属性,很显然最后一个数据项不能为主属性
答案错了,别套了,之前相同的答案是2NF这个最高是3NF, BCNF是没有非主属性,很显然最后一个数据项不能为主属性
点赞 回复
发布于 2018-08-25 16:28
0
我只能说你的理解一塌糊涂,前面有一个相同的题目,答案和这不一样
我只能说你的理解一塌糊涂,前面有一个相同的题目,答案和这不一样
点赞 回复
发布于 2018-08-30 15:59
0
收起
  • 1
  • 2
多选题
Java
24.
以下线程安全的有?
A
ArrayList
B
Vector
C
HashMap
D
HashTable
正确答案:BD
你的答案:未作答
官方解析:
Vector和HashTable都是线程安全的集合类,它们的所有方法都被synchronized关键字修饰,能够保证在多线程环境下的数据一致性。

分析错误选项:
A. ArrayList是非线程安全的集合类,它的方法没有进行同步处理。在多线程环境下对ArrayList进行并发操作可能会导致数据不一致。如果需要线程安全的ArrayList,可以使用Collections.synchronizedList()方法进行包装。

C. HashMap也是非线程安全的集合类。当多个线程同时操作HashMap时,可能会导致数据丢失或不一致。如果需要在多线程环境下使用Map,应该使用ConcurrentHashMap或者HashTable。

补充说明:
1. Vector是ArrayList的线程安全版本,但由于synchronized关键字导致的性能开销,现在更推荐使用ArrayList+Collections.synchronizedList()或CopyOnWriteArrayList。

2. HashTable是HashMap的线程安全版本,但同样由于性能原因,现在更推荐使用ConcurrentHashMap,它提供了更好的并发性能。

3. 虽然Vector和HashTable是线程安全的,但它们的迭代器不是线程安全的,在迭代过程中如果集合被修改,仍然会抛出ConcurrentModificationException。
知识点:Java
题友讨论(1)
线程安全:这样记  :喂,SHE

喂指的是Vector

S指的是Stack

H指的是Hashtable

E指的是Enumeration
线程安全:这样记  :喂,SHE

喂指的是Vector

S指的是Stack

H指的是Hashtable

E指的是Enumeration
8 回复
发布于 05-06 18:10 山东
收起
多选题
Java
25.
下面关于Java 中 yield 和 sleep 方法说法错误的是()
A
yeild 方法调用后当前线程一定会让出 CPU 时间,而导致线程上下文切换
B
sleep 方法会导致当前线程暂停指定的时间,不会导致 CPU 时间片的消耗
C
yield 方法会导致当前线程暂停指定的时间,同时也会导致 CPU 时间片的消耗
D
yield 方法执行后,会使 running 状态的线程变为 waiting 状态
正确答案:ACD
你的答案:未作答
官方解析:
yield和sleep是Java中常用的线程控制方法,让我们逐个分析各选项的正误:

B选项正确:sleep方法会导致当前线程暂停指定时间,在这段时间内线程会释放CPU资源,不会消耗CPU时间片。

A选项错误:yield方法调用后,只是让当前线程让出CPU执行权,但不一定会发生线程切换。如果没有其他相同优先级的线程在等待CPU资源,该线程可能会继续执行。

C选项错误:yield方法并不会导致线程暂停指定时间,它只是一个提示性的方法,建议让出CPU时间片。yield之后线程会直接进入就绪状态,随时可能再次获得CPU执行权。

D选项错误:yield方法执行后,线程从running状态转为ready(就绪)状态,而不是waiting状态。这是一个重要的状态转换概念。

主要区别:
1. sleep会使线程进入计时等待状态,yield只是让线程回到就绪状态
2. sleep一定会发生线程切换,而yield不一定
3. sleep会暂停指定时间,而yield只是建议性让出CPU
4. sleep会使线程进入TIMED_WAITING状态,而yield会使线程进入READY状态
知识点:Java
题友讨论(1)
yield方法调用,让出CPU执行权,不一定发生线程切换。如果没有其他相同优先级的线程在等待CPU资源,该线程可能会继续执行
yield方法调用,让出CPU执行权,不一定发生线程切换。如果没有其他相同优先级的线程在等待CPU资源,该线程可能会继续执行
2 回复
发布于 07-15 15:52 山东 来自Android客户端
收起
多选题
数据库
26.
以下不同的数据库类型中,哪些不属于关系数据库范畴
A
MongoDB
B
PostgreSQL
C
Redis
D
HBase
正确答案:ACD
你的答案:未作答
官方解析:
在数据库系统中,MongoDB、Redis和HBase属于非关系型数据库(NoSQL),而PostgreSQL属于关系型数据库,这就是为什么ACD是正确答案。

详细分析:

A. MongoDB - 是一个面向文档的数据库,数据以类JSON格式存储,不需要预定义模式,属于非关系型数据库。它特别适合处理大量非结构化数据。

B. PostgreSQL - 是一个典型的关系型数据库管理系统(RDBMS),支持标准SQL,具有完整的ACID特性,使用预定义的表结构存储数据。

C. Redis - 是一个开源的内存数据结构存储系统,可以用作数据库、缓存和消息中间件。它支持多种数据结构如字符串、哈希表、列表等,属于非关系型数据库。

D. HBase - 是一个分布式、面向列的数据库,建立在Hadoop文件系统之上,主要用于存储海量结构化数据。它不支持SQL查询,属于非关系型数据库。

总结:非关系型数据库(NoSQL)通常不需要预定义模式,更灵活,适合处理大规模、高并发的数据场景,而关系型数据库则强调数据的一致性和关系性,通过预定义的表结构来组织数据。
知识点:数据库
题友讨论(14)
答案:ACD

NoSQL,泛指非关系型的数据库。
A  Mongodb数据属于文档型非关系数据库;
C  Redis属于KV键值数据库
D  Hbase属于列数据库
答案:ACD

NoSQL,泛指非关系型的数据库。
A  Mongodb数据属于文档型非关系数据库;
C  Redis属于KV键值数据库
D  Hbase属于列数据库
点赞 回复
发布于 2016-08-11 20:53
只有B属于关系型数据库;
A  Mongodb数据属于文档型非关系数据库;
C  Redis属于KV键值数据库
D  Hbase属于列数据库

答案:B
只有B属于关系型数据库;
A  Mongodb数据属于文档型非关系数据库;
C  Redis属于KV键值数据库
D  Hbase属于列数据库

答案:B
58 回复
发布于 2016-03-23 23:30
答案是ACD,题目是不属于。
答案是ACD,题目是不属于。
6 回复
发布于 2016-03-31 09:48
0
学习
学习
点赞 回复
发布于 2019-02-26 18:13
0
noSQL数据库其实有很多:
基于K-V:Redis, Voldemort, Oracle BDB
基于列存储:Cassandra, HBase, Riak.
基于文档型:CouchDB, MongoDB
图形(Graph)数据库 Neo4J, InfoGrid, Infinite Graph

noSQL数据库其实有很多:
基于K-V:Redis, Voldemort, Oracle BDB
基于列存储:Cassandra, HBase, Riak.
基于文档型:CouchDB, MongoDB
图形(Graph)数据库 Neo4J, InfoGrid, Infinite Graph

20 回复
发布于 2018-03-12 16:33
只有B属于关系型数据库;
A  Mongodb数据属于文档型非关系数据库;
C  Redis属于KV键值数据库
D  Hbase属于列数据库
只有B属于关系型数据库;
A  Mongodb数据属于文档型非关系数据库;
C  Redis属于KV键值数据库
D  Hbase属于列数据库
3 回复
发布于 2017-04-06 08:57
2 回复
发布于 2022-10-10 15:18 山东
hbase nosql
hbase nosql
点赞 回复
发布于 2024-02-27 01:49 广东 来自Android客户端
NOSQL数据库: Redis,MongoDB,Hbase
NOSQL数据库: Redis,MongoDB,Hbase
点赞 回复
发布于 2022-06-15 10:54 来自Android客户端
最后一个选项属于列表数据库
最后一个选项属于列表数据库
点赞 回复
发布于 2021-06-18 12:48 来自iOS客户端
实名反对下面所有答案: B选项属于对象关系数据库 对象关系数据库  对象关系数据库不是关系数据库 
PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为PostgreSQL,版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。PostgreSQL支持大部分 SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引。免费使用、修改、和分发 PostgreSQL,不管是私用、商用、还是学术研究使用。
实名反对下面所有答案: B选项属于对象关系数据库 对象关系数据库  对象关系数据库不是关系数据库 
PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为PostgreSQL,版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。PostgreSQL支持大部分 SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引。免费使用、修改、和分发 PostgreSQL,不管是私用、商用、还是学术研究使用。
点赞 回复
发布于 2018-12-24 20:31
Mongodb:文档性数据库 Redis:kv键值数据库 Hbase列数据库
Mongodb:文档性数据库 Redis:kv键值数据库 Hbase列数据库
点赞 回复
发布于 2017-03-14 08:32
收起
  • 1
  • 2
多选题
Java
27.
类之间存在以下几种常见的关系:
A
“USES-A”关系
B
“HAS-A”关系
C
“IS-A”关系
D
“INHERIT-A”关系
正确答案:ABC
你的答案:未作答
官方解析:
在面向对象设计中,主要存在三种基本的类关系:"USES-A"(使用关系)、"HAS-A"(组合关系)和"IS-A"(继承关系)。这三种关系构成了面向对象设计的基础。

分析每个选项:

A."USES-A"关系是正确的。这种关系表示一个类使用另一个类的服务,但两个类之间是松散耦合的。例如,当一个类的方法使用另一个类的对象作为参数或返回值时。

B."HAS-A"关系是正确的。这种关系表示一个类包含另一个类的实例作为其成员变量,表示整体与部分的关系。例如,汽车类中包含引擎类的实例。

C."IS-A"关系是正确的。这种关系表示继承关系,一个类是另一个类的特殊化。例如,猫类继承自动物类,表示猫是一种动物。

D."INHERIT-A"关系是错误的。在面向对象设计中并没有"INHERIT-A"这个专门的术语,继承关系已经由"IS-A"关系表示了。这个选项是冗余且不准确的。

因此,ABC三个选项准确描述了面向对象中的三种基本类关系,而D选项是不恰当的表述。
知识点:Java
题友讨论(223)
在这边做题,我感觉我完全就不会Java
在这边做题,我感觉我完全就不会Java
671 回复
发布于 2018-12-17 11:37
有这种感觉😄😄
有这种感觉😄😄
20 回复
发布于 2019-02-27 18:35
0
一样一样
一样一样
6 回复
发布于 2019-03-05 10:59
0
展开90条回复
是你 有你 一切拜托你
“is a” "has a" "uses a"
是你 有你 一切拜托你
“is a” "has a" "uses a"
503 回复
发布于 2019-04-09 17:34
***啊
***啊
30 回复
发布于 2019-07-05 12:07
0
优秀优秀
优秀优秀
5 回复
发布于 2019-08-21 11:02
0
展开34条回复
USES-A:依赖关系,A类会用到B类,这种关系具有偶然性,临时性。但B类的变化会影响A类。这种在代码中的体现为:A类方法中的参数包含了B类。
关联关系:A类会用到B类,这是一种强依赖关系,是长期的并非偶然。在代码中的表现为:A类的成员变量中含有B类。
HAS-A:聚合关系,拥有关系,关联关系的一种特例,是整体和部分的关系。比如鸟群和鸟的关系是聚合关系,鸟群中每个部分都是鸟。
IS-A:表示继承。父类与子类,这个就不解释了。
要注意:还有一种关系:组合关系也是关联关系的一种特例,它体现一种contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分的关系,但这种整体和部分是不可分割的。
USES-A:依赖关系,A类会用到B类,这种关系具有偶然性,临时性。但B类的变化会影响A类。这种在代码中的体现为:A类方法中的参数包含了B类。
关联关系:A类会用到B类,这是一种强依赖关系,是长期的并非偶然。在代码中的表现为:A类的成员变量中含有B类。
HAS-A:聚合关系,拥有关系,关联关系的一种特例,是整体和部分的关系。比如鸟群和鸟的关系是聚合关系,鸟群中每个部分都是鸟。
IS-A:表示继承。父类与子类,这个就不解释了。
要注意:还有一种关系:组合关系也是关联关系的一种特例,它体现一种contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分的关系,但这种整体和部分是不可分割的。
234 回复
发布于 2018-11-28 21:50
貌似has a 主要指组合吧?
貌似has a 主要指组合吧?
2 回复
发布于 2019-05-15 20:00
0
😁
😁
1 回复
发布于 2021-02-22 20:41
0
展开11条回复
use-a 是依赖关系
has-a   一般是组合关系
is-a   一般是继承关系   
use-a 是依赖关系
has-a   一般是组合关系
is-a   一般是继承关系   
108 回复
发布于 2018-09-15 09:39
inherit看单词是继承 😄
inherit看单词是继承 😄
点赞 回复
发布于 2018-09-26 09:05
0
同问,inherit不是继承关系吗
同问,inherit不是继承关系吗
点赞 回复
发布于 2018-10-25 22:26
0
展开5条回复
java还有这么***的题目啊 以为走错片场了。
java还有这么***的题目啊 以为走错片场了。
62 回复
发布于 2018-09-16 18:40
Java编程思想里有
Java编程思想里有
2 回复
发布于 2018-12-13 15:40
0
怒我直言,那是你菜&hellip;
怒我直言,那是你菜…
点赞 回复
发布于 2019-05-13 19:17
0
展开2条回复
每当觉得自己无敌了的时候,就会有那么一道题来给你当头一棒
每当觉得自己无敌了的时候,就会有那么一道题来给你当头一棒
29 回复
发布于 2019-01-18 16:12
至少你觉得自己无敌了,而我
至少你觉得自己无敌了,而我
点赞 回复
发布于 2024-03-20 12:09 江苏 来自Android客户端
0
兄弟一起学不
兄弟一起学不
点赞 回复
发布于 2024-03-24 13:08 广西
0
d:inherit是继承的意思,继承其实就是is-a,没有inherit-a的说法
d:inherit是继承的意思,继承其实就是is-a,没有inherit-a的说法
27 回复
发布于 2019-02-22 00:47
是(is)有(has)用(uses)的😁
是(is)有(has)用(uses)的😁
18 回复
发布于 2020-03-18 13:04
INHERIT-A 以为是继承关系 看单词了
真实答案是
USER-A 依赖关系
HAS-A 组合关系
IS-A 继承关系
INHERIT-A 以为是继承关系 看单词了
真实答案是
USER-A 依赖关系
HAS-A 组合关系
IS-A 继承关系
7 回复
发布于 2018-09-26 09:17
类与类之间的关系:
1、 泛化(Generalization) IS-A
表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。
2、关联(Association) 
     
对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系

2.1聚合(Aggregation) HAS-A

    聚合关系(Aggregation):是关联关系的一种,是强的关联关系。聚合是整体与个体之间的关系。如汽车类与引挚类,轮胎类之间的关系就是整体与个体的关系。

 2.2组合(Composition)

         是关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表的对象负责代表部分的对象的生命周期,合成关系是不能共享的。

3、 依赖(Dependency) USES-A

对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。


类与类之间的关系:
1、 泛化(Generalization) IS-A
表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。
2、关联(Association) 
     
对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系

2.1聚合(Aggregation) HAS-A

    聚合关系(Aggregation):是关联关系的一种,是强的关联关系。聚合是整体与个体之间的关系。如汽车类与引挚类,轮胎类之间的关系就是整体与个体的关系。

 2.2组合(Composition)

         是关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表的对象负责代表部分的对象的生命周期,合成关系是不能共享的。

3、 依赖(Dependency) USES-A

对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。


6 回复
发布于 2021-08-03 15:50
收起
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
多选题
数据库
28.
在MySQL中,关于HASH索引,下列描述正确的是( )
A
只用于使用=或者 < = >操作符的等式比较
B
优化器不能使用HASH索引来加速Order By操作
C
如果将一个MyISAM表改为HASH索引的MEMORY表,不会影响查询的执行效率
D
只能使用整个关键字来搜索一行
正确答案:ABD
你的答案:未作答
官方解析:
HASH索引是MySQL中的一种特殊索引类型,让我们逐个分析各个选项:

A正确: HASH索引只能用于等值比较,即使用=或<=>操作符。这是因为HASH索引是根据索引列的值计算HASH值,只能进行精确匹配查询。

B正确: HASH索引确实不能用于优化ORDER BY操作。因为HASH索引中的数据并不是按照索引值顺序存储的,而是根据HASH值离散分布的,所以无法用于排序。

D正确: HASH索引只能使用完整的索引键来查找。不支持部分索引键匹配,必须使用索引中的所有列进行查询才能命中索引。

C错误: 将MyISAM表改为HASH索引的MEMORY表会显著影响查询性能。因为:
1. MEMORY表的数据是存储在内存中的,访问速度比磁盘快得多
2. 两种存储引擎的索引实现机制不同
3. MEMORY表的HASH索引在某些场景(如等值查询)下性能优于MyISAM的B-Tree索引

因此ABD是正确答案。HASH索引具有查询效率高但使用场景受限的特点,主要适用于等值查询的场景。
知识点:数据库、Java工程师、C++工程师、2017
题友讨论(15)
HASH索引:利用哈希函数,计算存储地址,检索时不需要像Btree那样,从根节点开始遍历,逐级查找。
       
 优点: 查找效率高。(C选项)
 局限:     
      仅仅满足=,in,<=>,查询,不能范围查询(原先有序的键值经过哈希函数运算,可能不再连续);(A选项)
      无法用于排序操作(order by);(B选项)
      当重复值时,效率并不比BTree高;
      不能利用部分索引键查询;(D选项)
HASH索引:利用哈希函数,计算存储地址,检索时不需要像Btree那样,从根节点开始遍历,逐级查找。
       
 优点: 查找效率高。(C选项)
 局限:     
      仅仅满足=,in,<=>,查询,不能范围查询(原先有序的键值经过哈希函数运算,可能不再连续);(A选项)
      无法用于排序操作(order by);(B选项)
      当重复值时,效率并不比BTree高;
      不能利用部分索引键查询;(D选项)
71 回复
发布于 2017-07-05 21:19
可以
可以
点赞 回复
发布于 2018-04-09 16:57
0
好答案
好答案
点赞 回复
发布于 2019-02-27 12:01
0

BTREE索引和 HASH 索引的差异:

(1)HASH索引只用于使用 = <=> 操作符的等式比较。如果一定要使用范围查询 的话,只能使用BTREE索引。

2)优化器不能使用 Hash 索引来加速 order by 操作。

3)使用 Hash 索引时 MySQL 不能确定在两个值之间大约有多少行。如果将一 MyISAM表改为的 Hash 索引 memory 表,

会影响一些查询的执行效率。

(4)Hash索引只能使用整个关键字来搜索一行。

BTREE索引和 HASH 索引的差异:

(1)HASH索引只用于使用 = <=> 操作符的等式比较。如果一定要使用范围查询 的话,只能使用BTREE索引。

2)优化器不能使用 Hash 索引来加速 order by 操作。

3)使用 Hash 索引时 MySQL 不能确定在两个值之间大约有多少行。如果将一 MyISAM表改为的 Hash 索引 memory 表,

会影响一些查询的执行效率。

(4)Hash索引只能使用整个关键字来搜索一行。

39 回复
发布于 2017-05-31 19:59
枯了T-T
枯了T-T
5 回复
发布于 2019-12-23 14:38
一摸一样...
一摸一样...
点赞 回复
发布于 2022-02-21 21:43
0
+1
+1
点赞 回复
发布于 2022-08-15 22:17
0
展开1条回复
除了 <=> ,还有两个其他的操作符用来处理某个值和NULL做比较,也就是IS NULL and IS NOT NULL。他们是ANSI标准中的一部分,因此也可以用在其他数据库中。而<=>只能在mysql中使用。 你可以把<=>当作mysql中的方言。   'a' IS NULL ==> 'a' <=> NULL 'a' IS NOT NULL ==> NOT('a' <=> NULL)
除了 <=> ,还有两个其他的操作符用来处理某个值和NULL做比较,也就是IS NULL and IS NOT NULL。他们是ANSI标准中的一部分,因此也可以用在其他数据库中。而<=>只能在mysql中使用。 你可以把<=>当作mysql中的方言。   'a' IS NULL ==> 'a' <=> NULL 'a' IS NOT NULL ==> NOT('a' <=> NULL)
4 回复
发布于 2018-04-10 07:53
<=>操作符好像和=类似?
<=>操作符好像和=类似?
3 回复
发布于 2017-09-06 18:15
只用于使用=或者 < = >操作符的等式比较
优化器不能使用HASH索引来加速Order By操作
只能使用整个关键字来搜索一行
只用于使用=或者 < = >操作符的等式比较
优化器不能使用HASH索引来加速Order By操作
只能使用整个关键字来搜索一行
2 回复
发布于 2017-10-09 15:57
a是对的
a是对的
点赞 回复
发布于 2024-03-11 01:43 广东 来自Android客户端
HASH索引:利用哈希函数,计算存储地址,检索时不需要像Btree那样,从根节点开始遍历,逐级查找。 优点: 查找效率高。(C选项) 局限: 仅仅满足=,in,<=>,查询,不能范围查询(原先有序的键值经过哈希函数运算,可能不再连续);(A选项) 无法用于排序操作(order by);(B选项) 当重复值时,效率并不比BTree高; 不能利用部分索引键查询;(D选项)
HASH索引:利用哈希函数,计算存储地址,检索时不需要像Btree那样,从根节点开始遍历,逐级查找。 优点: 查找效率高。(C选项) 局限: 仅仅满足=,in,<=>,查询,不能范围查询(原先有序的键值经过哈希函数运算,可能不再连续);(A选项) 无法用于排序操作(order by);(B选项) 当重复值时,效率并不比BTree高; 不能利用部分索引键查询;(D选项)
点赞 回复
发布于 2021-06-16 00:11 来自Android客户端
仅仅满足=,in,<=>,查询 A也没IN啊
仅仅满足=,in,<=>,查询 A也没IN啊
点赞 回复
发布于 2020-07-07 09:32
1、在MySQL中,关于HASH索引,描述正确的有:(1)只用于使用=或者< = >操作符的等式比较;(2)优化器不能使用HASH索引来加速Order By操作;(3)只能使用整个关键字来索引 一行。

2、BTREE索引和HASH索引的差异:
(1)HASH索引只用于使用=或<=>操作符的等式比较。如果一定要使用范围查询的话,只能使用BTREE索引。
(2)优化器不能使用Hash索引来加速Order By 操作。
(3)使用Hash索引时,MySQL不能确定在两个值之间大约有多少行。如果将一个MyISAM表改为Hash索引memory表,会影响一些查询的执行效率。
(4)Hash索引只能使用整个关键字来索引一行。
1、在MySQL中,关于HASH索引,描述正确的有:(1)只用于使用=或者< = >操作符的等式比较;(2)优化器不能使用HASH索引来加速Order By操作;(3)只能使用整个关键字来索引 一行。

2、BTREE索引和HASH索引的差异:
(1)HASH索引只用于使用=或<=>操作符的等式比较。如果一定要使用范围查询的话,只能使用BTREE索引。
(2)优化器不能使用Hash索引来加速Order By 操作。
(3)使用Hash索引时,MySQL不能确定在两个值之间大约有多少行。如果将一个MyISAM表改为Hash索引memory表,会影响一些查询的执行效率。
(4)Hash索引只能使用整个关键字来索引一行。
点赞 回复
发布于 2017-07-25 08:54
收起
多选题
Java
29.
在Java中下面Class的声明哪些是错误的?
A
public abstract final class Test { abstract void method(); }
B
public abstract class Test { abstract final void method(); }
C
public abstract class Test { abstract void method() { } }
D
public class Test { final void method() { } }
正确答案:ABC
你的答案:未作答
官方解析:暂无官方题目解析,去讨论区看看吧!
知识点:Java
题友讨论(204)
A、final修饰的类为终态类,不能被继承,而 抽象类是必须被继承的才有其意义的,因此,final是不能用来修饰抽象类的。
B、 final修饰的方法为终态方法,不能被重写。而继承抽象类,必须重写其方法。
C、抽象方法是仅声明,并不做实现的方法。
A、final修饰的类为终态类,不能被继承,而 抽象类是必须被继承的才有其意义的,因此,final是不能用来修饰抽象类的。
B、 final修饰的方法为终态方法,不能被重写。而继承抽象类,必须重写其方法。
C、抽象方法是仅声明,并不做实现的方法。
416 回复
发布于 2017-01-15 10:55
b项中,这样表述更加完善 :定义抽象方法是为了被重写,而用final修饰的方法不能被重写,故与本意相矛盾 一个类如果继承了一个抽象类,它应该重写父类中所有的抽象方法,如果没有重写所有的抽象方法,就需要将这个类定义为抽象类
b项中,这样表述更加完善 :定义抽象方法是为了被重写,而用final修饰的方法不能被重写,故与本意相矛盾 一个类如果继承了一个抽象类,它应该重写父类中所有的抽象方法,如果没有重写所有的抽象方法,就需要将这个类定义为抽象类
13 回复
发布于 2017-05-05 15:55
0
你自已看看自己写的最后两句话,想清楚了再发
你自已看看自己写的最后两句话,想清楚了再发
7 回复
发布于 2017-07-08 16:06
0
展开11条回复
C中定义的抽象方法没有实体时候,大括号必须省略。
C中定义的抽象方法没有实体时候,大括号必须省略。
117 回复
发布于 2016-12-22 16:59
不是&ldquo;抽象方法没有实体时候&rdquo;,而是抽象方法不允许有方法体,同时不能有大括号,应直接以分号结束。
不是“抽象方法没有实体时候”,而是抽象方法不允许有方法体,同时不能有大括号,应直接以分号结束。
31 回复
发布于 2017-11-08 03:45
0
没注意大括号。。。最重要的是检查时也没看出来
没注意大括号。。。最重要的是检查时也没看出来
2 回复
发布于 2017-11-18 18:07
0
展开8条回复

1、抽象类不能被实例化,实例化的工作应该交由它的子类来完成,它只需要有一个引用即可。

2、抽象方法必须由子类来进行重写。

3、只要包含一个抽象方法的类,该类必须要定义成抽象类,不管是否还包含有其他方法。

4、抽象类中可以包含具体的方法,当然也可以不包含抽象方法。

5、abstract不能与final并列修饰同一个类。

6、abstract 不能与private、static、final或native并列修饰同一个方法。、

1、抽象类不能被实例化,实例化的工作应该交由它的子类来完成,它只需要有一个引用即可。

2、抽象方法必须由子类来进行重写。

3、只要包含一个抽象方法的类,该类必须要定义成抽象类,不管是否还包含有其他方法。

4、抽象类中可以包含具体的方法,当然也可以不包含抽象方法。

5、abstract不能与final并列修饰同一个类。

6、abstract 不能与private、static、final或native并列修饰同一个方法。、

100 回复
发布于 2016-12-20 12:58
第5个,如果子类也是抽象类呢?为何抽象方法不能同名?
第5个,如果子类也是抽象类呢?为何抽象方法不能同名?
点赞 回复
发布于 2017-03-26 11:27
0
还有第3个:应该是只要包含一个抽象方法的类,该类必须要定义成抽象类,不管是否还包含有其他方法。(我找到你这个原来的博文,粘贴别人的,也要看看对不对啊再粘贴,很误导人的啊亲)
还有第3个:应该是只要包含一个抽象方法的类,该类必须要定义成抽象类,不管是否还包含有其他方法。(我找到你这个原来的博文,粘贴别人的,也要看看对不对啊再粘贴,很误导人的啊亲)
3 回复
发布于 2017-03-26 11:31
0
展开5条回复
A.被final修饰的类为最终类,不能被继承,而类前面如果有abstract修饰,则为抽象类,抽象类是需要被继承才有意义,因此abstract和final矛盾,选项错误。
B.被final修饰的方法为最终方法,不能被继承,而方法前面如果有abstract修饰,则为抽象方法,抽象方法是需要被继承才有意义,因此abstract和final矛盾,选项错误。
C.抽象类中的抽象方法不能有具体的实现,而选项中的 abstract void method() {}中{}代表有具体的实现,因此此处应该为abstract void method();
注意: abstract 不能与private、static、final或native并列修饰同一个方法。
A.被final修饰的类为最终类,不能被继承,而类前面如果有abstract修饰,则为抽象类,抽象类是需要被继承才有意义,因此abstract和final矛盾,选项错误。
B.被final修饰的方法为最终方法,不能被继承,而方法前面如果有abstract修饰,则为抽象方法,抽象方法是需要被继承才有意义,因此abstract和final矛盾,选项错误。
C.抽象类中的抽象方法不能有具体的实现,而选项中的 abstract void method() {}中{}代表有具体的实现,因此此处应该为abstract void method();
注意: abstract 不能与private、static、final或native并列修饰同一个方法。
48 回复
发布于 2017-02-19 23:23
秒懂,你才是大锅
秒懂,你才是大锅
1 回复
发布于 2023-08-23 11:54 四川
0
点赞 回复
发布于 2023-09-23 23:25 安徽
0
我特喵的甚至看不到题目,能有选项……
我特喵的甚至看不到题目,能有选项……
15 回复
发布于 2021-08-21 16:36
我也看不到题目,但是因为多选,所以这题就选错的,🤣
我也看不到题目,但是因为多选,所以这题就选错的,🤣
2 回复
发布于 2021-08-22 19:44 来自Android客户端
0
你可真是个小机灵鬼
你可真是个小机灵鬼
点赞 回复
发布于 2021-08-22 20:25
0
展开1条回复

ABC

A.抽象方法不能final修饰,不然你让别人怎么继承你来实现其中的方法

B.抽象方法不能final

C.抽象方法没有方法体{}

ABC

A.抽象方法不能final修饰,不然你让别人怎么继承你来实现其中的方法

B.抽象方法不能final

C.抽象方法没有方法体{}

4 回复
发布于 2017-04-03 17:03
是抽象类吧 不是抽象方法 希望你检阅自己的语言再发表
是抽象类吧 不是抽象方法 希望你检阅自己的语言再发表
1 回复
发布于 2018-11-08 19:08
0
我说你的A解释
我说你的A解释
点赞 回复
发布于 2018-11-08 19:09
0
没有题目,你让我猜吗???????????????????????????
没有题目,你让我猜吗???????????????????????????
3 回复
发布于 2022-01-11 16:59
A,B:abstract不能与final同时出现,因为final修饰的类不可继承,修饰的方法不可重写。而abstract修饰的类需要继承实现。
C:抽象方法不能包含body方法体。其中抽象方法可以使用public,protected,默认修饰,不能使用private。选项中采用默认的修饰。
A,B:abstract不能与final同时出现,因为final修饰的类不可继承,修饰的方法不可重写。而abstract修饰的类需要继承实现。
C:抽象方法不能包含body方法体。其中抽象方法可以使用public,protected,默认修饰,不能使用private。选项中采用默认的修饰。
3 回复
发布于 2018-01-18 08:48
c哪错了?
c哪错了?
3 回复
发布于 2016-12-21 13:42
抽象方法是仅声明,并不做实现的方法
抽象方法是仅声明,并不做实现的方法
1 回复
发布于 2017-01-15 10:46
0
谢谢,
谢谢,
点赞 回复
发布于 2017-04-08 11:29
0
<p>abstract 和final在意义上冲突,abstract需要被子类继承才有意义,而final注释的不可被继承。</p><p>C选项的abstract注释的类不能有方法体body</p><p><br></p>
<p>abstract 和final在意义上冲突,abstract需要被子类继承才有意义,而final注释的不可被继承。</p><p>C选项的abstract注释的类不能有方法体body</p><p><br></p>
2 回复
发布于 2022-05-03 08:23 来自iOS客户端
收起
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 15
多选题
数据库
30.
在MySQL中,下列关于触发器的描述正确的是()
A
MySQL的触发器只支持行级触发,不支持语句级触发
B
触发器可以调用将数据返回客户端的存储程序
C
在MySQL中,使用new和old引用触发器中发生的记录内容
D
在触发器中可以使用显式或者隐式方式开始或结束事务的语句
正确答案:AC
你的答案:未作答
官方解析:
MySQL触发器是一种特殊的存储过程,这道题目主要考察了触发器的基本特性。

选项A正确:MySQL只支持行级触发器(FOR EACH ROW),即触发器的触发是基于每一行记录的变化。不同于其他数据库系统,MySQL不支持语句级触发器。

选项C正确:在MySQL触发器中,可以使用NEW和OLD关键字来引用触发器中发生变化的记录内容。其中OLD表示操作前的记录,NEW表示操作后的记录。在INSERT触发器中只有NEW,在DELETE触发器中只有OLD,在UPDATE触发器中同时有OLD和NEW。

分析错误选项:
B错误:触发器不能调用返回结果集的存储过程。触发器执行的是一个动作,不能将数据返回给客户端。

D错误:触发器中不能使用显式或隐式的事务控制语句,如START TRANSACTION、COMMIT、ROLLBACK等。这是因为触发器本身就是事务的一部分,不能在其中另外控制事务。

这些限制保证了触发器的行为更加可预测和可控,有助于维护数据的一致性。
知识点:数据库、测试、后端开发、客户端开发、前端开发、人工智能/算法、数据、运维/技术支持
题友讨论(51)
我完美的避开了所有正确答案。。。
我完美的避开了所有正确答案。。。
143 回复
发布于 2016-08-18 13:07
我也是。。BD
我也是。。BD
1 回复
发布于 2016-08-25 08:45
0
me too...
me too...
1 回复
发布于 2016-08-26 15:05
0
展开33条回复

 A、 触发程序与表相关,当对表执行INSERT、DELETE或UPDATE语句时,将激活触发程序。可以将
触发程序设置为在执行语句之前或之后激活。例如,可以在从表中删除每一行之前,或在更新了

要想创建触发程序或舍弃触发程序,可使用CREATE TRIGGER或DROP TRIGGER语句

B、触发程序不能调用将数据返回客户端的存储程序,也不能使用采用CALL语句的动态SQL

(允许存储程序通过参数将数据返回触发程序)。

C、使用OLD和NEW关键字,能够访问受触发程序影响的行中的列(OLD和NEW不区分大小写)。
在INSERT触发程序中,仅能使用NEW.col_name,没有旧行。在DELETE触发程序中,仅能使用
OLD.col_name,没有新行。在UPDATE触发程序中,可以使用OLD.col_name来引用更新前的某一
行的列,也能使用NEW.col_name来引用更新后的行中的列。

D、 触发程序不能使用以显式或隐式方式开始或结束事务的语句,如START TRANSACTION、
COMMIT或ROLLBACK。


 A、 触发程序与表相关,当对表执行INSERT、DELETE或UPDATE语句时,将激活触发程序。可以将
触发程序设置为在执行语句之前或之后激活。例如,可以在从表中删除每一行之前,或在更新了

要想创建触发程序或舍弃触发程序,可使用CREATE TRIGGER或DROP TRIGGER语句

B、触发程序不能调用将数据返回客户端的存储程序,也不能使用采用CALL语句的动态SQL

(允许存储程序通过参数将数据返回触发程序)。

C、使用OLD和NEW关键字,能够访问受触发程序影响的行中的列(OLD和NEW不区分大小写)。
在INSERT触发程序中,仅能使用NEW.col_name,没有旧行。在DELETE触发程序中,仅能使用
OLD.col_name,没有新行。在UPDATE触发程序中,可以使用OLD.col_name来引用更新前的某一
行的列,也能使用NEW.col_name来引用更新后的行中的列。

D、 触发程序不能使用以显式或隐式方式开始或结束事务的语句,如START TRANSACTION、
COMMIT或ROLLBACK。


45 回复
发布于 2016-04-26 10:11
触发程序不可以隐式方式开始或结束事务的语句,如START TRANSACTION、 COMMIT或ROLLBACK。
触发程序不可以隐式方式开始或结束事务的语句,如START TRANSACTION、 COMMIT或ROLLBACK。
点赞 回复
发布于 2016-09-17 18:35
0
AC
AC
点赞 回复
发布于 2016-09-19 12:26
0
35 回复
发布于 2016-09-06 20:31

有一样的么??????

有一样的么??????
3 回复
发布于 2018-08-03 10:51
没有
没有
点赞 回复
发布于 2019-12-29 14:08
0
大家好,我是MC 枫少,不知道触发机器是什么的举个手
大家好,我是MC 枫少,不知道触发机器是什么的举个手
2 回复
发布于 2018-04-23 16:06
触发程序不能使用以显式或隐式方式开始或结束事务的语句;
允许存储程序通过参数将数据返回触发程序,反过来不行
触发程序不能使用以显式或隐式方式开始或结束事务的语句;
允许存储程序通过参数将数据返回触发程序,反过来不行
点赞 回复
发布于 2021-07-23 15:43
这题目很简单,选项完美避开正确答案,这个波他预判了我的预判
这题目很简单,选项完美避开正确答案,这个波他预判了我的预判
点赞 回复
发布于 2021-03-07 11:50
哭辽,完美避开所有正确答案
哭辽,完美避开所有正确答案
点赞 回复
发布于 2019-03-26 23:49
老夫数据库题全错,也是稳健得一比,不太喜欢这种基础概念测试,希望能出涉及实战得sql题目
老夫数据库题全错,也是稳健得一比,不太喜欢这种基础概念测试,希望能出涉及实战得sql题目
点赞 回复
发布于 2018-11-20 15:59
去面试的时候,面试官都是问基础知识的多
去面试的时候,面试官都是问基础知识的多
点赞 回复
发布于 2019-08-03 10:37
0
A C纠结半天,一看答案是多选OrZ
A C纠结半天,一看答案是多选OrZ
点赞 回复
发布于 2018-01-18 20:23
收起
  • 1
  • 2